我目前正在开展一个项目,在图像中查找直线和这些线的长度,如下所示:
我在python中使用scikit-image包试图找到这些行,这是我的代码:
edges=canny(image[:,:,0], 2, low_threshold=0.6, high_threshold=0.9)
lines=probabilistic_hough_line(edges, threshold=30, line_length=40, line_gap=1)
然后我绘制线条来验证我是否找到了大部分直线
可以看出,原始图像上沿着线条(黑色)有很多重叠和断开的线段(多色)。颜色线的长度应该等于黑线的长度,并且每条黑线不应该有重复的线段。
我尝试了所有变量,例如“threshold”,“sigma”,“line_length”,“gap”等,但仍然无法完全摆脱重复的线段。
有人能给我一些暗示或指示我做错了什么以及我应该对这个问题做些什么,拜托?希望我的问题不会太混乱。
我尝试使用Scikit-image,因为在我看来,它的重量比OpenCV轻。
提前谢谢你。
答案 0 :(得分:2)
您需要先对图像进行镂空。那么Canny将毫无用处(考虑到你的图像类型,骨架化将为你提供你需要的1像素厚的轮廓。)
现在发生的是图像上的线条很粗,所以Canny检测每条粗线两侧的轮廓,而Hough变换检测两条轮廓上的线条。
使用skimage
,您可以使用from skimage.morphology import skeletonize
。