opencv_createsamples“断言失败”错误

时间:2018-11-02 15:55:17

标签: opencv training-data cascade-classifier

我正在尝试从我的正像样本中创建一个vec文件。我正在使用最新版本的Opencv。我正在使用的命令是这样的:

opencv_createsamples -info Positive.info -num 3750 -w 24 -h 24 -vec Positive.vec

我所有的图像都大于24x24,所以我不认为这是问题所在。我尝试了在线搜索,但是在执行createsamples命令时找不到任何出现此错误的人。我运行时得到的输出是这样的:

Info file name: Positive.info
Img file name: (NULL)
Vec file name: Positive.vec
BG  file name: (NULL)
Num: 3750
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: 24
Height: 24
Max Scale: -1
RNG Seed: 12345
Create training samples from images collection...
OpenCV: terminate handler is called! The last OpenCV error is:
OpenCV(4.0.0-alpha) Error: Assertion failed (0 <= roi.x && 0 <= roi.width && roi.x + roi.width <= m.cols && 0 <= roi.y && 0 <= roi.height && roi.y + roi.height <= m.rows) in cv::Mat::Mat, file c:\build\master_winpack-build-win64-vc15\opencv\modules\core\src\matrix.cpp, line 465

这是我第一次使用opencv,所以我不清楚这个错误是什么。任何人对此都有经验,或者可以为我指出纠正错误的正确方向?

4 个答案:

答案 0 :(得分:2)

这是Tushar Pathade,当您的info.txt(包含要检测的对象的信息的文件)文件包含一些错误的信息(例如image_name 1 0 0 0 0或image_name 2 10 20 30 40)时,就会出现此错误。坐标为(0,0,0,0),这在第二个示例中为no。的对象是2,但仅提及一个对象的坐标。

因此,此行产生了此错误。因此,首先将其删除,然后运行。这样您就不会收到任何错误。

就像上面提到的priyanka一样,这也需要首先照顾,但这会产生另一个错误。没什么,但是找不到图像错误。因此,为避免出现这种情况,请将info.txt文件放在负片图像所在的文件夹中。基本上,您会看到错误的路径,因此相应地进行处理。 谢谢。

答案 1 :(得分:1)

这是Priyanka。 我也遇到了同样的错误,并且试图以某种方式解决它。 但是我在互联网上找不到任何东西。

但是我能够成功解决问题。 缺少的2-3件事如下:

  1. 我使用opencv_annotation.exe生成-info(文本文件)。该实用程序将完整的图像路径嵌入文件中,因为opencv_createsamples.exe期望图像与-info文件位于同一文件夹中。因此,曾经发生的是图像的路径与-info文件的路径串联在一起。 也就是说,假设-info文件位于# make sure the date is in correct format df['Operation Start Date'] = pd.to_datetime(df['Operation Start Date']) df['min_date'] = df.groupby(['OpCode', 'PYear'])['Operation Start Date'].transform('min') ,图像位于D:\MyPath\DataSet\annotations.txt。在这种情况下,执行opencv_createsamples.exe时,完整的图像路径将变为D:\MyPath\DataSet\Vehicles\*.png,该实用程序无法找到该路径。

  2. 为迎合正确的道路,请注意以下事项

    • 将-info文件放在与图像相同的路径中。
    • 确保-info文件没有任何图像的路径。它应该只包含

    D:\MyPath\DataSet\D:\MyPath\DataSet\Vehicles\image000.png

通过此更改,图像路径已正确获取,我的问题得到解决。

尝试执行此操作。可能会对您有帮助。

答案 2 :(得分:1)

我遇到了同样的错误。

该错误与边界框有关,有时在创建边界框时会在图像像素外部创建一个框,以使区域不被接受,然后出现此错误。

解决方案:

我使用分而治之的技术来解决这个问题。我所做的是创建了一个新的文本文件,在该文本文件中,我从原始信息或文本文件中粘贴了一些文件,如果创建了示例,则运行代码;如果没有,则运行该代码,然后从该文本文件中删除任何一个图像再次*(再次运行create_samples)*。这样做直到获得干净的文件。我知道这太繁琐了,但是行得通。!

谢谢

答案 3 :(得分:0)

我现在面临同样的问题,如果 num 参数小于 950,它对我有用。