我试图从嘈杂的图像中检测线条,这些是我遵循的步骤:
img= cv2.imread('/content/spec_un45_3900000.jpg',cv2.IMREAD_GRAYSCALE)
字符串
x1c 0d1x的数据
img = 255 - cv2.medianBlur(img, 3) #Invert and blur
型
的
#Remove white spots from background
kernel = np.ones((1, 2), np.uint8)
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel,iterations=2)
型
的
edges = cv2.Canny(opening,0,100,apertureSize = 3)
cv2_imshow(edges)
型
的
#Hough Line detection
lines = cv2.HoughLinesP(image=edges,
rho=1,
theta=np.pi/180,
threshold=100,
lines=np.array([]),
minLineLength=5,
maxLineGap=200)
for i in range(lines.shape[0]):
cv2.line(out,
(lines[i][0][0],
lines[i][0][1]),
(lines[i][0][2],
lines[i][0][3]),
(0,255, 255), 1, cv2.LINE_AA)
型
x1c4d 1x的
我尝试了How to detect lines in noisy line images?中提到的方法
有人能帮我调试这个/提供解决方案吗?
1条答案
按热度按时间8aqjt8rx1#
这不是一个非常有效的答案,但它对严重的噪声具有鲁棒性,并且内核过滤思想对于单尺度匹配(它不处理尺度变化)任务很有用。
使用原始图像(ksize = 201,thresh = 150)
x1c 0d1x的数据
最后一张图像(ksize = 51,thresh = 200)
的
基本的想法是创建一个与你想要的图像/形状匹配的内核。然后你可以在图像上卷积它并寻找热点。最后我对蒙版进行去重化以去除粗线(在蒙版上运行hough-lines希望只得到一条线而不是一堆线)。
字符串