【问题标题】:Opencv_createsamples fails with segmentation faultOpencv_createsamples 因分段错误而失败
【发布时间】: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


【解决方案1】:

解决了!感谢 Micka 提出解决方案并且是正确的。注释文件中有错误。兴趣点的描述之一是 0 0 0 0,这是无效的。请务必仔细检查您的文件!

【讨论】:

    猜你喜欢
    • 2016-06-13
    • 1970-01-01
    • 2018-09-01
    • 2023-03-10
    • 2013-02-15
    • 1970-01-01
    • 1970-01-01
    • 2017-09-10
    • 1970-01-01
    相关资源
    最近更新 更多