我正在尝试从我的正像样本中创建一个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,所以我不清楚这个错误是什么。任何人对此都有经验,或者可以为我指出纠正错误的正确方向?
答案 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件事如下:
我使用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
,该实用程序无法找到该路径。
为迎合正确的道路,请注意以下事项
D:\MyPath\DataSet\D:\MyPath\DataSet\Vehicles\image000.png
通过此更改,图像路径已正确获取,我的问题得到解决。
尝试执行此操作。可能会对您有帮助。
答案 2 :(得分:1)
我遇到了同样的错误。
该错误与边界框有关,有时在创建边界框时会在图像像素外部创建一个框,以使区域不被接受,然后出现此错误。
解决方案:
我使用分而治之的技术来解决这个问题。我所做的是创建了一个新的文本文件,在该文本文件中,我从原始信息或文本文件中粘贴了一些文件,如果创建了示例,则运行代码;如果没有,则运行该代码,然后从该文本文件中删除任何一个图像再次*(再次运行create_samples)*。这样做直到获得干净的文件。我知道这太繁琐了,但是行得通。!
谢谢
答案 3 :(得分:0)
我现在面临同样的问题,如果 num 参数小于 950,它对我有用。