You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenCV中CascadeClassifier Bad Argument错误排查求助

OpenCV CascadeClassifier构造函数参数错误:无法将对象转换为字符串文件名

我用Python 3.9开发OpenCV项目时,在car_tracker变量定义行报错,注释该行后程序能正常运行,但不清楚错误原因。

报错信息

Traceback (most recent call last):
File "C:\Users\XXXX\Desktop\Car_Automation\Car_Automation.py", line 18, in
car_tracker = cv2.CascadeClassifier(trained_car_data)
cv2.error: OpenCV(4.6.0) :-1: error: (-5:Bad argument) in function 'CascadeClassifier'
Overload resolution failed:

  • Can't convert object to 'str' for 'filename'

相关代码

import cv2
    
#Our pre-trained car classifier
pedestrian_tracker = cv2.CascadeClassifier('haarcascade_fullbody.xml')
trained_car_data = cv2.CascadeClassifier('car_detector.xml')

# create opencv image
img = cv2.imread('car.jpg')

#convert to grayscale
black_n_white = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

#Create car classifier
car_tracker = cv2.CascadeClassifier(trained_car_data)    #Error happens on this line

#detect cars
cars = trained_car_data.detectMultiScale(black_n_white)

print(cars)

#Display the image with the faces spotted
cv2.imshow('Car Detector', black_n_white)

#Don't autoclose Wait here in the code and listen for a key press)
cv2.waitKey()

print("Code Completed")

错误原因

trained_car_data已经是CascadeClassifier的实例对象,但你错误地将它传入了CascadeClassifier的构造函数——这个构造函数要求传入字符串类型的模型文件路径,而非已实例化的对象,因此触发了类型转换失败的错误。

解决方案

  • 若无需额外的分类器实例,直接删除报错的car_tracker = cv2.CascadeClassifier(trained_car_data)这一行即可,因为你已经通过trained_car_data完成了车型检测模型的加载,后续代码也在正常使用它进行检测。
  • 若确实需要创建另一个分类器实例,需传入模型文件路径字符串,示例:
    car_tracker = cv2.CascadeClassifier('car_detector.xml')
    

内容的提问来源于stack exchange,提问作者Matt Dolly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 15:24:40