2016-06-08 436 views
0

如何使用OpenCV从图像中检测矩形或五边形?我有名片的照片,我必须检测它们。我试过HoughLinesP()函数,但它只是查找线条。OpenCV - 矩形或五边形的检测

我必须检测图片上方的形状并扩展图像以显示矩形的相交点。

+0

_“和它的发现只是线”_这是线的Hough变换的目的。请显示一些图像和一些代码,并查看[问] – Miki

回答

1

你可以按照下面的步骤:

  1. 查找使用findContours图像中的轮廓。

  2. 执行approxPoly以获取图像中存在的所有轮廓的多边形形状。

  3. 检查逼近轮廓尺寸(边数在多边形):

    如果边的数目为4 =>矩形

    如果边的数目为5 =>五角

的代码是蟒蛇,但应该很容易转换为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

这只适用于琐碎的图像。但是,这是一个开始...... D你可以发布一个片段来展示如何做到这一点? – Miki

+0

@Miki,我不知道你的案例中“琐碎的图像”是什么,如果你有图像的例子,它可能不适合他们,编辑你的问题,并将它们连接起来。 –

+0

这不是我的问题; D – Miki

0

关于如何检测图像中的矩形的很好的例子。检查这link