我需要在自相交处测试轮廓,但是我不知道它是如何实现的。或者如何在cv::Mat中仅检测轮廓而没有自相交?

c++ - 如何使用C++和OpenCV检测轮廓自相交?-LMLPHP

F.ex.左轮廓必须匹配,右轮廓不匹配

最佳答案

如果线条由多边形表示(您知道角点),则可以在累积矩阵上绘制线条。

声明类型为cv::Mat的新的空白CV_8UC1并使用零值对其进行初始化。对于两行之间的每个像素,将矩阵增加1

我不是使用cv::line方法来完成此任务的最佳方法(您可以为每一行创建一个新图像并将所有图像加总作为最后一步)。我能想到的最好方法是通过使用直线方程来增加点数。

当您绘制相交的线时,在累积矩阵中将具有2的值。如果找到它们,您将知道轮廓具有自相交,并且您也知道它们在哪里。

如果您将图像作为输入,那么前面提到的解决方案可能会起作用。

最好的祝福!

关于c++ - 如何使用C++和OpenCV检测轮廓自相交?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32683932/

10-16 05:07