我目前正在开发一个项目,以在图像中查找直线和这些直线的长度,如下所示:
我在 python 中使用了 scikit-image 包试图找到这些行,这是我的代码:
edges=canny(图像[:,:,0], 2, low_threshold=0.6, high_threshold=0.9)
线=probabilistic_hough_line(边缘,阈值=30,line_length=40,line_gap=1)
然后我绘制了线条来验证我是否找到了大部分直线
可以看出,原始图像上的线条(黑色)上有很多重叠和断线的线段(多色)。彩色线的长度应等于黑色线的长度,并且每条黑色线不应有重复的线段。
我尝试启动所有变量,例如“threshold”、“sigma”、“line_length”、“gap”等,但仍然无法完全消除重复的线段。
有人可以给我一些提示或指导,告诉我我做错了什么以及我应该对此问题做什么吗?希望我的问题不会太困惑。
我尝试使用 Scikit-image,因为在我看来,它比 OpenCV 的重量相对更轻。
提前谢谢您。
最佳答案
您需要先骨架化您的图像。那么 Canny 将毫无用处(给定图像的类型,骨架化将为您提供所需的 1 像素粗轮廓)。
现在发生的情况是图像上的线条很粗,因此 Canny 检测每条粗线两侧的轮廓,而霍夫变换则检测两个轮廓上的线条。
通过skimage
,您可以使用from skimage.morphology import sculptureize
。
关于python - Scikit-image:如何减少断线段、重叠线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44192039/