使用OpenCV检测汽车坐标时触发cv2.error: (-215)断言失败错误求助
问题
我正在用Python编写一个为汽车绘制矩形框的程序,目前卡在获取汽车坐标的环节,代码如下:
################################################# import cv2 ################################################# car_data = cv2.CascadeClassifier(cv2.data.haarcascades + "cars.xml") img = cv2.imread("car_front.jpeg") ################################################# img_but_bnw = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) car_coordinates = car_data.detectMultiScale(img_but_bnw) print(car_coordinates) ################################################# cv2.imshow("Detect Everything", img_but_bnw) cv2.waitKey() print("Code Completed") #################################################
运行cv2.detectMultiScale函数时出现以下错误:
File "e:\Python2\Body_Detection.py", line 11, in <module> car_coordinates = car_data.detectMultiScale(img_but_bnw) cv2.error: OpenCV(4.6.0) D:\a\opencv-python\opencv-python\opencv\modules\objdetect\src\cascadedetect.cpp:1689: error: (-215:Assertion failed) !empty() in function 'cv::CascadeClassifier::detectMultiScale'
已尝试将cv2.CascadeClassifier("cars.xml")改为cv2.CascadeClassifier(cv2.data.haarcascades + "cars.xml"),但问题仍未解决。
解决方案
这个错误核心是级联分类器未成功加载或者图像读取失败,按以下步骤排查:
检查车辆检测级联文件的文件名
OpenCV默认的haarcascades目录中没有cars.xml,常用的车辆检测级联文件是haarcascade_car.xml或haarcascade_vehicle.xml,替换文件名尝试:car_data = cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_car.xml")如果目录中没有对应文件,需自行下载车辆检测级联文件放到项目目录,直接用文件名加载:
car_data = cv2.CascadeClassifier("haarcascade_car.xml")验证图像是否成功读取
在cv2.imread后添加检查,确认路径正确或文件未损坏:img = cv2.imread("car_front.jpeg") if img is None: print("图像读取失败,请检查路径或文件是否损坏") exit()确认级联分类器加载成功
创建分类器后添加验证代码:if car_data.empty(): print("级联分类器加载失败,请检查文件路径") exit()
内容的提问来源于stack exchange,提问作者EMEMEM123
相关产品推荐
相关产品推荐

