【发布时间】:2018-08-14 22:51:59
【问题描述】:
我目前正在尝试制作一个 HAAR 分类器。我已经制作了一个注释文件,并按照官方 openCV 教程中的描述完成了所有操作:https://docs.opencv.org/3.3.0/dc/d88/tutorial_traincascade.html。 但是,当我尝试使用 opencv_createsamples 创建示例时,出现错误。我的命令:
opencv_createsamples -vec /some_dirs/samples/samples.vec -info /some_dirs/annotations/annotations.dat -w 8 -h 8 -num 100
错误:
Info file name: /home/nikifaets/code/pointsProcessing/annotations/annotations.dat
Img file name: (NULL)
Vec file name: /home/nikifaets/code/pointsProcessing/samples/samples.vec
BG file name: (NULL)
Num: 100
BG color: 0
BG threshold: 80
Invert: FALSE
Max intensity deviation: 40
Max x angle: 1.1
Max y angle: 1.1
Max z angle: 0.5
Show samples: FALSE
Width: 8
Height: 8
Max Scale: -1
RNG Seed: 12345
Create training samples from images collection...
OpenCV Error: Assertion failed (ssize.width > 0 && ssize.height > 0) in resize, file /build/opencv/src/opencv-3.4.0/modules/imgproc/src/resize.cpp, line 4044
terminate called after throwing an instance of 'cv::Exception'
what(): /build/opencv/src/opencv-3.4.0/modules/imgproc/src/resize.cpp:4044: error: (-215) ssize.width > 0 && ssize.height > 0 in function resize
中止(核心转储)
但是,如果我尝试只做两个样本(不知道为什么正好是 2...),它会运行并创建 .vec 文件,尽管我的数据集包含大约 300-400 张图片。
annotations.dat的粘贴箱
提前感谢您的支持!
【问题讨论】:
-
可能您的一张图片已损坏或不存在或注释非法?您可以尝试将注释分成两半并分别测试两个文件吗?如果它仅在其中一个上失败,则将其再次分成两半,依此类推。应该是找到不工作图像的最快方法(无需更改代码)
-
是的!问题解决了。说实话没想到会出现这样的问题。注释文件中的第一张图像有兴趣点描述 0 0 0 0,这是无效的。非常感谢您指出!
标签: linux opencv image-recognition training-data haar-classifier