我有以下图像:名为’Normalised.png’。我试图从点状线条中绘制实线。
我尝试过像Hough变换这样的方法:
但似乎代码在’edges’上失败了,因为没有检测到’edges’。
输入图像
期望的输出图像
我如何实现这个输出?
回答:
默认情况下,HoughLinesP适用于直线。然而,您可以通过使用cv2.HOUGH_PROBABILISTIC来检测曲线,如下所示:
img = cv.imread("Dilate.png")gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)edges = cv.Canny(gray, 150, 200, apertureSize=3)cv.imwrite("Canny.png", edges)element = cv.getStructuringElement(cv.MORPH_RECT, (5, 3), (-1, -1))dilated = cv.dilate(edges, element)cv.imwrite("Eroded.png", dilated)minLineLength = 200maxLineGap = 5lines = cv.HoughLinesP(dilated, cv.HOUGH_PROBABILISTIC, np.pi/180, 150, minLineLength, maxLineGap)for x in range(0, len(lines)): for x1, y1, x2, y2 in lines[x]: pts = np.array([[x1, y1], [x2, y2]], np.int32) cv.polylines(img, [pts], True, (0, 255, 0))cv.imwrite('dilate_final.png', img)
注意线条是如何被绘制的。
结果并不是你想要的,但很接近,需要你调整参数,这部分我留给你。希望对你有帮助!