我在OPENCV_ROOT
文件夹中并在Win-x64中运行以下命令:
opencv_createsamples -bgcolor 0 -bgthresh 0 -maxxangle 1.1 -maxyangle 1.1
maxzangle 0.5 -maxidev 40 -w 80 -h 40
-img ABSOLUTE_PATH_TO_POSITIVE_IMAGES_FOLDER\car.jpg
-bg ABSOLUTE_PATH_TO_PROJECT\negatives.txt
-vec ABSOLUTE_PATH_TO_SAMPLES_FOLDER\car.jpg.vec
-num 125
我的negatives.txt
看起来像这样:
negative_images\city01_02.jpg
negative_images\city01_04.jpg
negative_images\city01_05.jpg
negative_images\city01_06.jpg
negative_images\city01_07.jpg
这是我的输出:
Info file name: (NULL)
Img file name: ABSOLUTE_PATH_TO_POSITIVE_IMAGES_FOLDER\car.jpg
Vec file name: ABSOLUTE_PATH_TO_SAMPLES_FOLDER\car.jpg.vec
BG file name: ABSOLUTE_PATH_TO_PROJECT\negatives.txt
Num: 125
BG color: 0
BG threshold: 0
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: 80
Height: 40
Create training samples from single image applying distortions...
Invalid background description file.
我的底片收藏文件(negatives.txt
)有什么效果?我尝试使用绝对路径和相对路径列出其中的文件。我正在关注this教程。
答案 0 :(得分:2)
问题解决了!问题只是我在Notepad ++中编写了集合文件名,这一切看起来都很好。但是当我碰巧在记事本中打开同一个文件时,我注意到每个图像文件名后都没有换行符!当我添加换行符并运行命令时,创建的样本没有错误!
答案 1 :(得分:2)
如果您是在Windows上创建文件并在Linux上运行文件,例如Ubuntu,您必须更改“行尾顺序”。
在CR LF上单击编辑器底部,将其更改为 LF ,然后重试!
记事本++:
Visual Studio代码:
答案 2 :(得分:1)
我遇到了同样的问题。只需在图片地址之间跳过行即可。例如:在我的 negatives.dat 文件之前:
./Negative_Images/197.
./Negative_Images/69.
./Negative_Images/510.
./Negative_Images/513.
./Negative_Images/169.png
现在是:
./Negative_Images/197.png
./Negative_Images/69.png
./Negative_Images/510.png
./Negative_Images/513.png
./Negative_Images/169.png
问题解决了。
答案 3 :(得分:0)
就我而言,我正在使用脚本创建此bg.txt
文件。基本上,它在做:
for (int i = 0; i < numberOfImages; i++)
{
myDescFile << imagesFolder + std::to_string(i) + ".jpg\n";
}
我只是添加了另一个\n
,问题就消失了!
myDescFile << imagesFolder + std::to_string(i) + ".jpg\n\n";
编辑:
您还必须确保路径使用 /
或\\
作为分隔符。否则,您将能够运行opencv_createsamples.exe
cmd,没有错误,但是最后将永远看不到 Done
。
例如:L:/imgTraining/plant/bnw/0.jpg
这是一张来自记事本++的优质bg文件的图片(已激活View>Show Symbol>Show End of Line
并选择了Edit>EOL Conversion>Windows (CR LF)
):
答案 4 :(得分:0)
通过dos2unix
在Linux上安装sudo apt-get install dos2unix
。
现在,您只需要使用dos2unix YourFileName.txt
。