Python 关于利用OpenCV进行直线检测

Python 关于利用OpenCV进行直线检测,python,image,opencv,Python,Image,Opencv,我尝试在下图中标记道路,黄色中间线和白色边缘线: 我使用Hough Transfrom的标准代码。我的代码如下: 导入cv2 将numpy作为np导入 img=cv2.imread('Road3.jpg') hsv=cv2.CVT颜色(img,cv2.COLOR\U BGR2GRAY) 低黄色=np.数组([18,94,140]) up\u yellow=np.array([48255255]) 遮罩=cv2.inRange(高速、低黄、高黄) 边缘=cv2.Canny(遮罩,75150) 线

我尝试在下图中标记道路,黄色中间线和白色边缘线:

我使用Hough Transfrom的标准代码。我的代码如下:

导入cv2
将numpy作为np导入
img=cv2.imread('Road3.jpg')
hsv=cv2.CVT颜色(img,cv2.COLOR\U BGR2GRAY)
低黄色=np.数组([18,94,140])
up\u yellow=np.array([48255255])
遮罩=cv2.inRange(高速、低黄、高黄)
边缘=cv2.Canny(遮罩,75150)
线=cv2.HoughLinesP(边,1,np.pi/180,50,最大线间距=250)
对于行中的行:
x1,y1,x2,y2=线[0]
cv2.线(img,(x1,y1),(x2,y2),(0255,0),5)
cv2.imshow(“图像”,img)
cv2.imshow(“边缘”,边缘)
k=cv2.等待键(0)
cv2.destroyAllWindows()
但有一个错误的反馈:

换线后

hsv=cv2.cvt颜色(框架,cv2.COLOR\u BGR2HSV)

我的输出如下:

这似乎只是问题的一部分,但我不知道问题出在哪里

根据艾哈迈特的回答,我可以得到如下的黑色图片,但彩色图片是整个图片的一部分


我想问题出在这一行:

hsv = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
此处变量名为
hsv
,但
cv2.COLOR\u bgr2 gray
不会为您生成hsv图像。相反,它将为您提供单通道灰度图像。对于HSV,您需要使用
cv2.COLOR\u BGR2HSV

如上所述,将RGB转换为HSV的正确方法是使用
cv2.COLOR\u BGR2HSV
标志:

# Convert BGR to HSV
mask = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
更改行时,输出:

  • 我如何获得结果?
我使用
imwrite
并将图像保存到本地电脑中

cv2.imwrite("out.png", edges)
但如果要显示,首先需要调整大小以查看整个图像

cv2.imshow("edges", cv2.resize(edges, (640, 480)))
cv2.waitKey(0)
cv2.destroyAllWindows()

谢谢你的回答。修改后,我可以运行代码。但我的输出图片只是原始图片的一部分。我不知道问题出在哪里。请把我的答案写在问题下面。我不明白你的问题。请你再说一遍好吗?你是在告诉我,你在显示图像时有困难吗?是的,我没有得到与你相同的图片,而是图片的左侧部分。我在问题中放了两张图片。请看,谢谢。我想我能得到你的输出。但我问题中的第一张彩色图片仍然是图片的一部分,而不是全部。为什么黑色图片和彩色图片的输出不一致?