OpenCV/Python中的Hough行

zin*_*non 4 opencv python-2.7

我试图在python中使用opencv在图像中找到hough行.

我的代码是:

import cv2
import numpy as np

img = cv2.imread('DLMIA.png')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)


edges = cv2.Canny(gray,100,200,apertureSize = 3)
cv2.imshow('edges',edges)
cv2.waitKey(0)

minLineLength = 30
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('hough',img)
cv2.waitKey(0)
Run Code Online (Sandbox Code Playgroud)

我使用的图像是 这个.

我的结果是 这个.

我的代码示例取自此处.

生成的图像与上一个链接中提到的图像不同.有什么帮助吗?

zin*_*non 23

我找到了解决方案.

代码示例仅显示第一个hough行.

如果要打印图像上的所有hough线,则必须打印所有线条.

这是更正后的代码:

import cv2
import numpy as np

img = cv2.imread('dave.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)


edges = cv2.Canny(gray,100,200,apertureSize = 3)
cv2.imshow('edges',edges)
cv2.waitKey(0)

minLineLength = 30
maxLineGap = 10
lines = cv2.HoughLinesP(edges,1,np.pi/180,15,minLineLength,maxLineGap)
for x in range(0, len(lines)):
    for x1,y1,x2,y2 in lines[x]:
        cv2.line(img,(x1,y1),(x2,y2),(0,255,0),2)

cv2.imshow('hough',img)
cv2.waitKey(0)
Run Code Online (Sandbox Code Playgroud)


小智 5

更优雅的解决方案是使用

for line in lines:
    for x1,y1,x2,y2 in line:
Run Code Online (Sandbox Code Playgroud)