Python 在<;模块>;灰色=cv2.CVT颜色(边框,cv2.COLOR\u bgr2灰色)?
我正在尝试使用Python 在<;模块>;灰色=cv2.CVT颜色(边框,cv2.COLOR\u bgr2灰色)?,python,opencv,cascade-classifier,Python,Opencv,Cascade Classifier,我正在尝试使用cv2制作一个汽车检测器/分类器。我从github下载了一个.xml文件: 当我运行我的代码时,我得到 Traceback (most recent call last): File "C:\Users\user1\Downloads\Stuff\Python\cascades\Car_classification.py", line 13, in <module> gray = cv2.cvtColor(frames, cv2.COL
cv2
制作一个汽车检测器/分类器。我从github下载了一个.xml
文件:
当我运行我的代码时,我得到
Traceback (most recent call last):
File "C:\Users\user1\Downloads\Stuff\Python\cascades\Car_classification.py", line 13, in <module>
gray = cv2.cvtColor(frames, cv2.COLOR_BGR2GRAY)
error: OpenCV(4.3.0) C:\projects\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'
我的输入图像:
我的输出图像:
它是一辆汽车,但我不认为轮胎是一辆汽车!那么我做错了什么呢?我不能肯定地说为什么你的分类对汽车没有任何帮助,因为我不知道你是从哪里来的。在不知道的情况下,我无法说它预计能够检测到什么样的图像。有可能是经过训练,它可以从更像这样的图像中识别汽车,或者更放大。在这种情况下,您的示例图像完全不同于经过训练要检测的图像。如果不知道更多,就不可能说 至于你收到的那个错误信息,我至少可以 解释一下
您正在以视频形式打开图像。在第一次通过循环时,它(令人惊讶地)能够读取图像数据,但在下一次通过之后,就没有更多的“帧”可读取,因此您的
frames
对象是None
,其中没有图像数据。这意味着当您尝试将其转换为灰度时,操作失败。您检查了吗?是的,但我不认为这是我需要的也许您需要提供“cars”文件的路径谢谢@buckley-w-david
import cv2
import numpy as np
cap = cv2.VideoCapture('car.jpg')
font = cv2.FONT_HERSHEY_TRIPLEX
harcascade = cv2.CascadeClassifier("cars.xml")
while True:
ret,frames = cap.read()
gray = cv2.cvtColor(frames, cv2.COLOR_BGR2GRAY)
cars = harcascade.detectMultiScale(gray, 1.1 , 2)
for (x,y,w,h) in cars:
cv2.rectangle(frames,(x,y),(x+w,y+h),(255,0,0),2)
cv2.putText(frames,str("Car"),(x,y+h),font,1,255)
cv2.imshow('img',frames)
k = cv2.waitKey(30) & 0xff
if k == 27:
break
cap.release()
cv2.destroyAllWindows()
cap = cv2.VideoCapture('car.jpg')