我需要在自相交处测试轮廓,但是我不知道它是如何实现的。或者如何在cv::Mat中仅检测轮廓而没有自相交?
F.ex.左轮廓必须匹配,右轮廓不匹配
最佳答案
如果线条由多边形表示(您知道角点),则可以在累积矩阵上绘制线条。
声明类型为cv::Mat
的新的空白CV_8UC1
并使用零值对其进行初始化。对于两行之间的每个像素,将矩阵增加1
。
我不是使用cv::line
方法来完成此任务的最佳方法(您可以为每一行创建一个新图像并将所有图像加总作为最后一步)。我能想到的最好方法是通过使用直线方程来增加点数。
当您绘制相交的线时,在累积矩阵中将具有2
的值。如果找到它们,您将知道轮廓具有自相交,并且您也知道它们在哪里。
如果您将图像作为输入,那么前面提到的解决方案可能会起作用。
最好的祝福!
关于c++ - 如何使用C++和OpenCV检测轮廓自相交?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32683932/