首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OpenCV -矩形或五边形的检测

OpenCV -矩形或五边形的检测
EN

Stack Overflow用户
提问于 2016-06-08 08:23:02
回答 2查看 2.5K关注 0票数 0

如何使用OpenCV从图像中检测矩形或五边形?我有很多名片的图片,我必须检测出他们的sides.The名片实际上是长方形的,但有时名片的角部是裁剪的。我尝试过HoughLinesP()函数,但它只是查找行。

我必须检测图片上方的形状,这意味着我需要检测名片边缘,而不管该形状是矩形还是五边形,并且只需要从图像中裁剪名片对象。

预期结果:

EN

回答 2

Stack Overflow用户

发布于 2016-06-08 08:38:31

您可以按照以下步骤操作:

  1. 使用findContours.
  2. Perform approxPoly查找图像中的轮廓,以获得图像中所有轮廓的多边形形状。
  3. 检查近似轮廓大小(多边形中的边数):

如果边数为4 => Rectangle

如果边数为5 => Pentagon

代码是用python编写的,但应该很容易转换为C++:

代码语言:javascript
运行
复制
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
EN

Stack Overflow用户

发布于 2016-06-08 19:08:14

您可以尝试使用MatchShapes函数。

Here is an example

我还发现了一个实现类似于@Dr.Haimovitz建议的方法的教程: It's here

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37691479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档