首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >opencv_createsamples“断言失败”错误

opencv_createsamples“断言失败”错误
EN

Stack Overflow用户
提问于 2018-11-02 23:55:17
回答 4查看 1.6K关注 0票数 0

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

代码语言:javascript
复制
opencv_createsamples -info Positive.info -num 3750 -w 24 -h 24 -vec Positive.vec

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

代码语言:javascript
复制
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,所以我不清楚这个错误是什么。有没有人有这方面的经验,或者能给我指出纠正错误的正确方向?

EN

回答 4

Stack Overflow用户

发布于 2019-01-09 11:30:46

这是普里扬卡。我也收到了同样的错误,我试图以某种方式解决它。但是我在网上找不到任何东西。

但是我能够成功地解决这个问题。缺少2-3件东西,如下所示:

  1. 我使用opencv_annotation.exe来生成-info (文本文件)。此实用程序将完整的图像路径嵌入到文件中,其中,正如opencv_createsamples.exe所期望的那样,图像与-info文件位于同一文件夹中。因此,过去发生的情况是图像的路径与-info文件的路径连接在一起。也就是说,假设D:\MyPath\DataSet\annotations.txt上有-info文件,而D:\MyPath\DataSet\Vehicles\*.png上有图像。在这种情况下,在执行opencv_createsamples.exe时,完整的图像路径将变为D:\MyPath\DataSet\D:\MyPath\DataSet\Vehicles\image000.png,实用程序无法找到该路径。
  2. 因此,为了满足正确的路径,请注意

下面的内容

代码语言:javascript
复制
- put the -info file in the same path as of images.
- ensure that the -info file does not have the path for any image. It should contain only the 

<image name without complete path> <object instances> <x y, width height>

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

试着这样做。这可能会对你有帮助。

票数 3
EN

Stack Overflow用户

发布于 2020-11-13 00:15:39

这是Tushar Pathade,当您的info.txt(包含待检测对象信息的文件)文件包含某些错误信息,如image_name 1 0 0 0或image_name 2 10 20 30 40时,会出现此错误。在第一个例子中,坐标是(0,0,0,0),这是不可能的,而在第二个例子中是no。对象的坐标是2,但只提到了一个对象的坐标。

所以这几行产生了这个错误。因此,首先删除它,然后运行。这样就不会出现任何错误了。

正如priyanka上面提到的,这也需要首先注意,但这将产生另一个错误。这只是图像找不到错误。因此,为了避免它,请将info.txt文件放在底片图像所在的文件夹中。基本上,你会看到错误的路径,所以相应地处理它。谢谢。

票数 2
EN

Stack Overflow用户

发布于 2020-11-05 03:56:51

我得到了同样的错误。

错误是关于边界框的,有时在创建边界框时,您会在图像像素之外创建一个框,因此该区域不会被接受,然后您会收到此错误。

解决方案:

我在这个解决方案中使用了分而治之的技术。我所做的是创建了一个新的文本文件,在这个文本文件中,我从原始的信息或文本文件中粘贴了一些文件,我运行了代码,如果它正在创建样本,那么很好,如果没有,那么删除文本文件中的任何一个图像再次运行*(再次运行create_samples )*。这样做,直到你得到干净的文件。我知道这太单调乏味了,但这是可行的。

谢谢

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53121910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档