使用OpenCV从点状图像中追踪线条

我有以下图像:名为’Normalised.png’。我试图从点状线条中绘制实线。

我尝试过像Hough变换这样的方法:

但似乎代码在’edges’上失败了,因为没有检测到’edges’。

输入图像

first

期望的输出图像

enter image description here

我如何实现这个输出?


回答:

默认情况下,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)

注意线条是如何被绘制的。

结果并不是你想要的,但很接近,需要你调整参数,这部分我留给你。希望对你有帮助!

Result

Related Posts

如何对SVC进行超参数调优?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

如何在初始训练后向模型添加训练数据?

我想在我的scikit-learn模型已经训练完成后再…

使用Google Cloud Function并行运行带有不同用户参数的相同训练作业

我正在寻找一种方法来并行运行带有不同用户参数的相同训练…

加载Keras模型,TypeError: ‘module’ object is not callable

我已经在StackOverflow上搜索并阅读了文档,…

在计算KNN填补方法中特定列中NaN值的”距离平均值”时

当我从头开始实现KNN填补方法来处理缺失数据时,我遇到…

使用巨大的S3 CSV文件或直接从预处理的关系型或NoSQL数据库获取数据的机器学习训练/测试工作

已关闭。此问题需要更多细节或更清晰的说明。目前不接受回…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注