为什么正文本文件不会创建示例
Why positive text file doesn't create the samples
我正在尝试进行人脸检测,为此我正在创建自己的XML文件。我有两个文件夹 - 一个用于存储正面图像,另一个用于存储负面图像。我正在创建两者的描述文件,名为正.txt和负.txt。文件正.txt共包含2676张图像,负片.txt共包含581张图像。现在我想使用以下命令创建 positive.txt 的 vec 文件:
opencv_createsamples -info positive.txt -vec vefile.vec -num 2676 -w 24 -h 24
.
但是,我收到一个错误。这是输出:
Info file name: positive.txt
Img file name: (NULL)
Vec file name: vefile.vec
BG file name: (NULL)
Num: 2676
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
Create training samples from images collection...
OpenCV Error: Assertion failed (rect.width >= 0 && rect.height >= 0 && rect.x < image->width && rect.y < image->height && rect.x + rect.width >= (int)(rect.width > 0) && rect.y + rect.height >= (int)(rect.height > 0)) in cvSetImageROI, file /home/arya/stuff/opencv/opencv-2.4.7/modules/core/src/array.cpp, line 3006
terminate called after throwing an instance of 'cv::Exception'
what(): /home/arya/stuff/opencv/opencv-2.4.7/modules/core/src/array.cpp:3006: error: (-215) rect.width >= 0 && rect.height >= 0 && rect.x < image->width && rect.y < image->height && rect.x + rect.width >= (int)(rect.width > 0) && rect.y + rect.height >= (int)(rect.height > 0) in function cvSetImageROI
Aborted (core dumped)
以下是正面.txt包含的有关2676图像的一些信息示例:
/home/arya/myown/Positive/Pictures1102.jpeg 2 414 271 40 51 547 289 37 52
/home/arya/myown/Positive/images460.jpeg 1 108 21 93 127
/home/arya/myown/Positive/Pictures1131.jpeg 3 298 418 62 81 443 316 42 52 656 346 50 52
/home/arya/myown/Positive/face294.jpeg 1 189 84 45 57
/home/arya/myown/Positive/images129.jpeg 1 115 22 84 112
/home/arya/myown/Positive/images724.jpeg 1 128 19 89 106
/home/arya/myown/Positive/Pictures489.jpeg 1 237 418 49 75
/home/arya/myown/Positive/images90.jpeg 1 106 19 93 116
/home/arya/myown/Positive/Pictures1246.jpeg 1 964 117 131 153
/home/arya/myown/Positive/face922.jpeg 2 218 175 74 74 274 155 0 0
什么可能导致上述错误?
设置图像的 ROI 时会发生此错误。创建样本实用程序从txt文件中获取对象位置,并通过给定位置矩形设置ROI。 例如:
(414 271 40 51)
是一个边界矩形,前两个整数是位置,最后两个是矩形的宽度和高度。如果此矩形不适合提供的图像,它将给出此断言错误。那么可能有什么问题:
1. 提供的矩形可能不按尊重的顺序给出。
2.提供的矩形可能不属于给定的图片。
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 使用std::multimap迭代器创建std::list
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 使用CMake创建QML插件
- 如何在c++中为模板函数实例创建快捷方式
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 试图在visual studio上用C++创建一个桌面应用程序
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 如何在C++20中创建模板别名的推导指南
- 如何为模板化对象创建模板向量?VS正在投掷C3203
- 如何创建一个空的全局类并在启动时实例化它
- 无法创建抽象类的实例
- 链接到自行创建的dll失败
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何在C++类内存结构中创建"spacer"?
- 终端不会为C++文件创建.exe文件吗
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息