我正在用python做一个化学项目的骨骼公式图像处理器。它还处于非常早期的阶段,但我被一个问题难住了。当我运行图像处理时,单行被计为多行;因为从单个笔行中提取了多行。因此,我需要一种方法来区分这些行,并使其能够在每个实际的笔行中注册一行,这样我就可以像在骨架公式中一样,将其准确地计算为CH3组。
下面是我当前的代码:
import cv2
import numpy as np
import math
image1 = cv2.imread('test2.jpeg')
gray = cv2.cvtColor(image1,cv2.COLOR_BGR2GRAY)
canimg = cv2.Canny(gray, 50, 200)
lines = cv2.HoughLinesP(canimg, 1, np.pi/180.0, 80, np.array ([]), 70, 20)
N = lines.shape[0]
for i in range(N):
x1 = lines[i][0][0]
y1 = lines[i][0][1]
x2 = lines[i][0][2]
y2 = lines[i][0][3]
cv2.line(image1,(x1,y1),(x2,y2),(255,0,0),2)
cv2.imshow('Lines Detected',image1)
cv2.imshow("Canny Detection", canimg)
cv2.waitKey(0)
cv2.destroyAllWindows()如我的问题所示,请参阅附件中的图像。

任何链接/建议/评论/批评都能改善图像处理中的线条检测。
发布于 2020-07-09 09:19:36
通过查看右上角的小地图,我假设此线条模式继续在您的图像中显示的内容的左侧和右侧。我认为找到一个健壮的方法并不容易,但这里有一些想法:
就我个人而言,我会首先尝试使用自定义箭头形状内核的侵蚀方法。乍一看,我认为它可能是这四种方法中最简单和最健壮的。
https://stackoverflow.com/questions/62732391
复制相似问题