2014-03-18 219 views
1

我在高中,我正在开发一个项目,以构建一个可让用户扫描名片的iOS应用程序,目前我正在开发卡上的边缘检测。我相信我的工作正常,它正在绘制卡的轮廓和其他一些阴影等。基于最大四边形轮廓的裁剪图像OpenCV

这里是我扫描时得到的示例图像,我应该可以转换为灰度,我也会这样做。

我怎样才能找到最大的四边形和裁剪我的形象,只包括卡?我所有的轮廓都存储在一个vector<vector<cv::Point> >绿线似乎是一个我很感兴趣的

enter image description here

回答

0

要找到你可以只遍历所有,并检查它们的尺寸最大的四边形/区。

该投影可以通过查找findHomographywarpPerspective完成。您将需要四边形的四个角点和再投影中的四个对应点(即图像的角落)。

0

这并不直接回答这个问题,但是在Python,找到最大的轮廓,你会做这样的事情:

contours, hierarchy = cv2.findContours(image, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) 
contours.sort(key=cv2.contourArea, reverse=True) 

cv2.contourArea是计算轮廓 地区的拉姆达reverse = True:降序(最大的第一个)

那么等高线的第0个元素就是最大的等高线。借鉴:

cv2.drawContours(image, contours, 0, (255, 0, 0), 2) 
+0

感谢您的支持。我没有意识到这种方法,对我的问题会很有帮助。 –