【发布时间】:2020-08-07 18:05:58
【问题描述】:
我有这个表示矩形近似值的二进制图像(numpy 数组):
我正在尝试提取矩形的真实形状,但似乎找不到方法。 预期结果如下:
我正在使用此代码
contours,_ = cv2.findContours(numpymask.copy(), 1, 1) # not copying here will throw an error
rect = cv2.minAreaRect(contours[0]) # basically you can feed this rect into your classifier
(x,y),(w,h), a = rect # a - angle
box = cv2.boxPoints(rect)
box = np.int0(box) #turn into ints
rect2 = cv2.drawContours(img.copy(),[box],0,(0,0,255),10)
plt.imshow(rect2)
plt.show()
但我得到的结果如下,这不是我需要的:
为此,我使用 Python 和 opencv。
【问题讨论】:
-
这不是一个边界“框”。尝试使用convexHull,然后用approxPolyDP逼近轮廓(尝试不同的逼近值,直到得到4个角)
-
可能使用 Radon 变换来查找 4 线轮廓...绿线对应于参数 Rho-theta 空间中的最小值。
标签: python opencv image-processing bounding-box