我尝试通过OpenCV的MSER检测在图像上找到对象 . 但函数 cvExtractMSER
返回不是轮廓,而是设置点( CvSeq
),即创建数字:
(1, 4), (2, 3), (2, 4), (3, 2), (3, 3), (3, 4), (4, 1), (4, 2), (4, 3), (4, 4), ...
但我只需要轮廓点:
(1, 4), (8, 4), (8, 1), (4, 1)
How I can find this contour?
我认为,最简单(但不是最快)的方式是:
-
用所有点绘制黑白图像(如何?逐点?)
-
使用
findContours
在新图像上查找轮廓
2 回答
findContours()中的一个选项是传递一个参数,该参数将删除除直线水平线,垂直线或对角线上的 endpoints 之外的所有点 . 如果您创建图像并绘制已列出的点,则findContours()可以为您完成剩余的工作 .
http://opencv.itseez.com/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=findcontours#findcontours
如果我理解正确,您正在寻找检测到的对象的角落 .
您可以遍历您的计数列表并通过简单的坐标比较编写一个简单的 logic to detect the 4 corners .