执行opencv_traincascade报Bad argument错误,求Haar人脸分类器训练方案
解决OpenCV Haar人脸检测分类器训练的Bad Argument错误(Ubuntu 16.04)
我帮你梳理几个最可能触发这个Bad Argument错误的原因,你可以按顺序排查:
1. 跳过了正样本vec文件的生成步骤
这是新手训练Haar分类器最容易踩的坑:opencv_traincascade不能直接读取positives.info文本文件,必须先通过opencv_createsamples把正样本转换成二进制的.vec格式文件。
执行以下命令生成vec文件(替换成你的实际路径):
opencv_createsamples -info positives.info -vec positives.vec -w 19 -h 19
这里的-w和-h必须和你的样本图片尺寸(19x19)完全一致。生成完成后,在训练命令里要指定-vec positives.vec,而不是直接用positives.info。
2. 检查positives.info的格式是否正确
你提到每行格式是/home/user/ML-Trainer/face/face1.png 1 0 0 18 18,这里的ROI宽高参数(最后两个数字)有问题:
你的图片是19x19像素,若正样本就是整张图片(无裁剪),正确的ROI参数应该是0 0 19 19。因为OpenCV里的ROI参数是x y width height,19像素宽高的图片,从(0,0)起始的完整区域宽高就是19。如果写成18,会导致ROI尺寸与训练窗口不匹配,触发参数错误。
3. 验证样本图片的有效性
部分损坏或不符合要求的图片也会导致Bad Argument错误:
- 检查损坏的PNG文件:安装
pngcheck工具后,在样本目录批量检查:
若有报错的文件,直接删除或替换。sudo apt install pngcheck pngcheck /home/user/ML-Trainer/face/*.png pngcheck /home/user/ML-Trainer/non-face/*.png - 确认所有图片是单通道灰度图:用简单的Python脚本验证:
运行后清理掉输出的无效图片。import cv2 import os # 检查正样本 face_dir = "/home/user/ML-Trainer/face" for img_name in os.listdir(face_dir): img_path = os.path.join(face_dir, img_name) img = cv2.imread(img_path, cv2.IMREAD_GRAYSCALE) if img is None or img.shape != (19, 19): print(f"无效正样本:{img_path}") # 检查负样本 non_face_dir = "/home/user/ML-Trainer/non-face" for img_name in os.listdir(non_face_dir): img_path = os.path.join(non_face_dir, img_name) img = cv2.imread(img_path, cv2.IMREAD_GRAYSCALE) if img is None or img.shape != (19, 19): print(f"无效负样本:{img_path}")
4. 检查训练命令的参数正确性
确保你的opencv_traincascade命令参数没有问题,参考正确的命令格式:
opencv_traincascade -data classifier -vec positives.vec -bg negatives.txt -numPos 2000 -numNeg 4000 -numStages 10 -w 19 -h 19
重点注意:
-bg参数需要负样本描述文件negatives.txt,每行是负样本的绝对路径,你需要先生成这个文件(比如find /home/user/ML-Trainer/non-face -name "*.png" > negatives.txt)-numPos要小于正样本总数(比如设为2000,训练过程中会淘汰部分样本)-numNeg要小于负样本总数,且建议是正样本数量的2-3倍(你的4548可以设为4000)-w和-h必须和样本尺寸完全一致(19)
5. 确认文件权限
确保你的用户对样本目录、描述文件、训练输出目录(比如classifier)有读写权限:
chmod -R 755 /home/user/ML-Trainer
内容的提问来源于stack exchange,提问作者Cezar Cobuz
相关产品推荐
相关产品推荐

