使用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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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