我在网上阅读,我发现可以根据使用边缘检测器检测到的行数判断图像是否被像素化,然后应用Hough变换。
我尝试过这种方法,但是hough转换似乎没有正确地检测到线条,我无法找出它为什么不能正常工作。
以下是一些结果图像供参考:Canny边缘检测结果
和Hough变换结果
我可以做些什么来改进测线检测?
我使用的代码基于一些在线教程:
img=cv2.imread(图像路径)
灰色=cv2.cvt颜色(img,cv2.color_bgr2gray)
高阈值,阈值im=cv2.阈值(灰色,0,255,cv2.阈值二进制+cv2.阈值otsu)
低阈值=0.5*高阈值
边缘=cv2.canny(img、低阈值、高阈值)
最小长度=200
最大线间隙=10
线条=cv2.houghlinesp(边缘,1,np.pi/180100,最小线条长度,最大线条间隙)
对于行[0]中的x1、y1、x2、y2:
cv2.线(img,(x1,y1),(x2,y2),(0255,0),2)
cv2.imshow(“img”,img)
cv2.等待键(0)
cv2.摧毁Windows()
我尝试过这种方法,但是Hough变换似乎没有正确地检测到线条,我不明白为什么它不能正常工作。
以下是一些结果图像供参考:Canny边缘检测结果

和Hough变换结果

我能做些什么来改进测线检测?
我使用的代码基于一些在线教程:
img = cv2.imread(image_path)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
high_thresh, thresh_im = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
lowThresh = 0.5*high_thresh
edges = cv2.Canny(img, lowThresh, high_thresh)
minLineLength = 200
maxLineGap = 10
lines = cv2.HoughLinesP(edges,1,np.pi/180,100,minLineLength,maxLineGap)
for x1,y1,x2,y2 in lines[0]:
cv2.line(img,(x1,y1),(x2,y2),(0,255,0),2)
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()