如何使用OpenCV从图像中检测矩形或五边形?我有名片的照片,我必须检测它们。我尝试了HoughLinesP()
功能,但它只是找到了一行。
我必须检测图片上方的形状并扩展图像以显示矩形的交叉点。
答案 0 :(得分:1)
您可以按照以下步骤操作:
使用findContours
。
执行approxPoly
以获取图像中存在的所有轮廓的多边形形状。
检查近似轮廓尺寸(多边形中的边数):
如果边数是 4 =>矩形强>
如果边数是 5 =>五边形强>
代码在python中,但应该很容易转换为C ++:
import cv2
gray = cv2.imread('img.png',0)
ret,thresh = cv2.threshold(gray,127,255,1)
contours,h = cv2.findContours(thresh,1,2)
for cnt in contours:
approx = cv2.approxPolyDP(cnt,0.01*cv2.arcLength(cnt,True),True)
if len(approx)==5:
print "pentagon"
elif len(approx)==4:
print "rectangle"
答案 1 :(得分:0)
答案 2 :(得分:0)
关于如何检测图像中的矩形的很好的例子。检查此link