【发布时间】:2021-08-22 16:16:12
【问题描述】:
我正在尝试转换如下所示的图像:
变成一个看起来像的东西(我画了这个):
我想在图像中检测并绘制线条,其中粗/薄部分被平滑以创建稍微均匀的宽度,并且如果图像中的像素接触,线条重叠。 (如果放大原始图像,您甚至可以看到细线段确实有像素连接它们)
我遇到的两个问题是:
- 原始图像中的薄像素部分最终会被分解。因此,转换后图像的像素不会在原始图像中重叠,从而在线条中产生间隙。
- 有些线条靠得很近,如果我扩大一些东西来尝试修复 #1,检测到的线条最终会在不应该重叠的地方相互重叠。
我目前正试图与 Canny/Hough 搞混以使其正常工作,但到目前为止一直没有成功。
edges = cv2.Canny(img, 50, 200, None, 3)
hough_img = np.copy(img) * 0 # creating a blank to draw lines on
lines = cv2.HoughLinesP(img, rho=1, theta=np.pi / 180, threshold=35, lines=np.array([]),
minLineLength=3, maxLineGap=2)
for line in lines:
for x1, y1, x2, y2 in line:
cv2.line(hough_img, (x1, y1), (x2, y2), (255, 0, 0), 2)
【问题讨论】:
-
Canny 是一个边缘检测器。当您想要检测线条时,检测边缘根本不是您需要做的。要检测线,请使用线检测器。要检测边缘,请使用边缘检测器。
标签: python opencv image-processing