【发布时间】:2019-04-16 15:44:36
【问题描述】:
给定图像中四个任意点的坐标(保证形成一个矩形),我想提取它们所代表的补丁并获得相同的矢量化(平面)表示。我该怎么做?
我看到了this 问题的答案,使用它我可以找到我需要的补丁。例如,给定此图像中绿色矩形的 4 个角的图像坐标:
我能够找到补丁并得到类似的东西:
使用以下代码:
p1 = (334,128)
p2 = (438,189)
p3 = (396,261)
p4 = (292,200)
pts = np.array([p1, p2, p3, p4])
mask = np.zeros((img.shape[0], img.shape[1]))
cv2.fillConvexPoly(mask, pts, 1)
mask = mask.astype(np.bool)
out = np.zeros_like(img)
out[mask] = img[mask]
patch = img[mask]
cv2.imwrite(img_name, out)
但是,问题是我获得的 patch 变量只是一个数组,其中包含属于补丁的图像的所有像素,当图像以行优先顺序作为矩阵读取时。
我想要的是patch 变量应该包含像素,以便它们可以形成真实图像,以便我可以对其执行操作。是否有一个我应该知道的 opencv 函数可以帮助我做到这一点?
谢谢!
【问题讨论】:
标签: python opencv image-processing