小编San*_*anj的帖子

如何在openCV python中使用HoughLines变换精确检测线条?

我是新手在两个pythonopencv,我在检测以下图像,其具有放置在地面黑线带中的行面临的一个问题:

在此输入图像描述

我使用了以下代码:

gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray,50,150,apertureSize = 3)
print img.shape[1]
print img.shape
minLineLength = img.shape[1]-1
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)
Run Code Online (Sandbox Code Playgroud)

但是它无法准确地检测到线条,只能在底部的第一个黑色条带上绘制一条绿线,甚至不覆盖整条线条,
另外,
请建议一种获取y每条线路的坐标的方法.

python numpy hough-transform opencv3.0

3
推荐指数
1
解决办法
2万
查看次数

如何使用python和opencv检测图像中的水平线并获得其y坐标?

我正在使用find contours方法,然后使用fitline函数逼近一条线.以下是代码:

img = cv2.imread('lines.jpg')
imgray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret,dst = cv2.threshold(imgray,127,255,0)
im2,cnts, hierarchy =cv2.findContours(dst,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
rows,cols = img.shape[:2]
[vx,vy,x,y] = cv2.fitLine(cnts[0], cv2.DIST_L2,0,0.01,0.01)
lefty = int((-x*vy/vx) + y)
righty = int(((cols-x)*vy/vx)+y)
cv2.line(img,(cols-1,righty),(0,lefty),(0,255,0),2)
print img.shape[:2]
cv2.imshow('image1',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)

以下是我作为输出获得的图像

我期待它检测图像中的每个黑色条纹,而它只检测从底部的第一行

python opencv object-detection

2
推荐指数
1
解决办法
4497
查看次数