我有以下图片:命名为“normalized.png”。我试图从虚线中画实线
我尝试过类似hough线变换的方法:
import cv2
import numpy as np
img = cv2.imread('Normalised.png')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray,50,150,apertureSize = 3)
minLineLength = 100
maxLineGap = 10
lines = cv2.HoughLinesP(edges,1,np.pi/180,100,minLineLength,maxLineGap)
for x1,y1,x2,y2 in lines[0]:
cv2.line(img,(x1,y1),(x2,y2),(0,255,0),2)
cv2.imwrite('houghlines5.jpg',img)
但由于未检测到“边缘”,因此代码在“边缘”上似乎失败
输入图像
预期输出图像
如何实现此输出
一个可能的方案(尽管整个任务似乎非常紧迫):
选择少量均匀分布的方向(如5)
在各个方向
在该方向平滑(f.i.具有非常细长的高斯曲线)或
在该方向腐蚀(使用线性结构元素),或两者都腐蚀,以便更好地连接点
使用阈值进行二值化,使点接触
应用形态加厚以获得细黑线
合并所有获得的贴图(最大操作)
清理
默认情况下,HoughLinesP适用于直线。但是,您可以使用cv2检测曲线
注意线条是如何绘制的
结果不完全是你们想要的,但接近,并要求你们调整参数,我将留给你们。希望有帮助
相关问题 更多 >
编程相关推荐