首页 文章

在OpenCV中查找点集的轮廓

提问于
浏览
4

我尝试通过OpenCV的MSER检测在图像上找到对象 . 但函数 cvExtractMSER 返回不是轮廓,而是设置点( CvSeq ),即创建数字:

(1, 4), (2, 3), (2, 4), (3, 2), (3, 3), (3, 4), (4, 1), (4, 2), (4, 3), (4, 4), ...

Area created by set of points

但我只需要轮廓点:

(1, 4), (8, 4), (8, 1), (4, 1)

Highlight needed contour points

How I can find this contour?

我认为,最简单(但不是最快)的方式是:

  • 用所有点绘制黑白图像(如何?逐点?)

  • 使用 findContours 在新图像上查找轮廓

2 回答

  • 1

    findContours()中的一个选项是传递一个参数,该参数将删除除直线水平线,垂直线或对角线上的 endpoints 之外的所有点 . 如果您创建图像并绘制已列出的点,则findContours()可以为您完成剩余的工作 .

    CV_CHAIN_APPROX_SIMPLE压缩水平,垂直和对角线段,仅留下其 endpoints . 例如,右上方的矩形轮廓用4个点编码 .

    http://opencv.itseez.com/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=findcontours#findcontours

  • 0

    如果我理解正确,您正在寻找检测到的对象的角落 .

    您可以遍历您的计数列表并通过简单的坐标比较编写一个简单的 logic to detect the 4 corners .

相关问题