OpenCV创建样本 - 无效的背景描述文件

时间:2014-03-24 13:00:26

标签: opencv computer-vision sample training-data

我在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教程。

5 个答案:

答案 0 :(得分:2)

问题解决了!问题只是我在Notepad ++中编写了集合文件名,这一切看起来都很好。但是当我碰巧在记事本中打开同一个文件时,我注意到每个图像文件名后都没有换行符!当我添加换行符并运行命令时,创建的样本没有错误!

答案 1 :(得分:2)

如果您是在Windows上创建文件并在Linux上运行文件,例如Ubuntu,您必须更改“行尾顺序”。

在CR LF上单击编辑器底部,将其更改为 LF ,然后重试!

记事本++:

Notepad++ image:

Visual Studio代码:

Visual Studio Code image:

答案 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)):

enter image description here

答案 4 :(得分:0)

通过dos2unix在Linux上安装sudo apt-get install dos2unix。 现在,您只需要使用dos2unix YourFileName.txt