2

我正在使用教程,并且正处于从正面图像中创建大量样本的阶段。我正在使用 Windows。

这是命令:

perl bin/createsamples.pl positives.txt negatives.txt samples 1500\  "C:\opencv_built\bin\Release\opencv_createsamples.exe -bgcolor 0 -bgthresh 0 -maxxangle 1.1\   -maxyangle 1.1 maxzangle 0.5 -maxidev 40 -w 80 -h 40"

对于每个正面图像,这就是我得到的输出:

C:\opencv_built\bin\Release\opencv_createsamples.exe -bgcolor 0 -bgthresh 0 -max
xangle 1.1\   -maxyangle 1.1 maxzangle 0.5 -maxidev 40 -w 80 -h 40 -img 60inclin
ation_315azimuth.jpg -bg tmp -vec samples0inclination_315azimuth.jpg.vec -num 62

Info file name: (NULL)
Img file name: 60inclination_315azimuth.jpg
Vec file name: samples0inclination_315azimuth.jpg.vec
BG  file name: tmp
Num: 62
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...
Done

消息似乎成功了,所以我进入样本文件夹,希望看到 1500 个样本,但那里什么也没有!我注意到信息文件是<NULL>,这与此有关吗?似乎没有任何错误,出了什么问题?

编辑

我已更改命令以包含所有内容的绝对路径,例如

perl bin/createsamples.pl C:\my_work\code\opencv-haar-classifier-training-master\positive_images\ C:\my_work\code\opencv-haar-classifier-training-master\positive_images\ samples 1500\  "C:\opencv_built\bin\Release\opencv_createsamples.exe -bgcolor 0 -bgthresh 0 -maxxangle 1.1\   -maxyangle 1.1 maxzangle 0.5 -maxidev 40 -w 80 -h 40"

但还是没有运气!

4

6 回答 6

5

我有一个类似的问题我会尝试解释我做了什么,我希望它能解决你的问题。

首先-info后面的NULL是正常的。正如 opencv_createcamples 的 OpenCV 官方文档中所说,您需要输入图像 (-img) 或图像集合 (-info) 我会让您阅读文档以进一步理解,但对于这个示例,您不需要需要它。

其次,您不需要在此命令中放置绝对路径;这是我的命令:

perl bin/createsamples.pl  positives.txt negatives.txt samples 1500 "opencv_createsamples -bgcolor 0 -bgthresh 0 -maxxangle 1.1 -maxyangle 1.1 -maxzangle 0.5 -maxidev 40 -w 42 -h 40"

为此,请确保位于您下载的 gitHub 目录的根目录(bin 的父目录),确保您的 positives.txt 和底片。txt 在这个目录下。还将 OpenCV 目录中的 opencv_createsamples.exe 复制粘贴到此目录中。

完成后,我现在将解释主要问题:该项目一开始是为 Ubuntu 开发的,因此它很容易适用于 mac,但我认为您必须在 Windows 下。如果您还没有,请下载 Cygwin,因为它主要使用 Linux 命令。

正如我所说,我被类似的问题阻止了,所以我尝试直接使用 opencv_createsample 而不是 perl 脚本来查看问题是否来自那里,我注意到问题来自我的 positives.txt 和否定.txt 是 Windows 格式而不是 Unix,因此 Perl 脚本无法正确读取它们

windows 和 linux 之间的差异很大,Cygwin 并没有弥合差距,因此可能存在其他编码问题。所以我所做的肯定不是解决问题的最快方法,但它是一种简单的方法。

我刚刚在我的电脑上安装了一个 Ubuntu vm

使用 TBB 安装 Opencv(互联网上有很多教程,最好的是来自OpenCV 站点的教程)。

我下载了 gitHub分类器培训,然后按照给出的命令进行操作,效果很好。

于 2014-05-30T11:48:10.810 回答
0

我有一个类似的问题我会尝试解释我做了什么,我希望它能解决你的问题。

首先,将文件命名为positives.datandnegatives.dat而不是positives.txtand negatives.txt

positives.dat其次,将文件复制并粘贴negatives.dat到当前目录中,然后运行:

perl bin/createsamples.pl positives.dat negatives.dat samples 1000 "opencv_createsamples -bgcolor 0 -bgthresh 0 -maxxangle 1.1 -maxyangle 1.1 maxzangle 0.5 -maxidev 40 -w 80 -h 40"

之后,检查您的示例文件夹,您应该会看到包含许多矢量文件的正负文件夹。

于 2018-10-11T07:01:33.330 回答
0

我也遇到了类似的问题,也在 Windows 中,但我的解决方案是检查 positives.txt 和negatives.txt 是否采用 createsamples.pl 文件可以理解的格式。我不确定这与您的问题相同,但我最终来到这里,所以其他人也可能这样做。

我从与 createsamples.pl 相同的目录运行以下 python 脚本以形成文本文件,这似乎使 perl 文件对我有用:

'''
Run this from the folder containing the positive and negative samples' folders (Note: outputs the text files to this directory)
'''
import glob
import sys

def write_locations(folder, textFile):
    print('')
    file = open(textFile, 'w')
    for contents in glob.glob('{}/*'.format(folder)):
        try:
            fileName = contents.split("\\")[-1]
            file.write('\n./{0}/{1}'.format(folder, fileName))
            print('./{0}/{1}'.format(folder, fileName))
        except:
            pass

write_locations('positive', 'positives.txt')
write_locations('negative', 'negatives.txt')

print('\n -Done.')

我的文件夹的组织可能与本教程略有不同(我只为 perl 文件去了那里),但我所做的只是检查文本文件是否读取如下内容:

./positive/1_1.png
./positive/1_2.png
./positive/1_3.png
./positive/1_4.png

等等。

于 2017-08-19T15:39:35.263 回答
0

另一个更简单的解释。假设您是 OpenCV 的新手(就像我一样),并且您只是按照其中一个教程视频来创建您的第一个对象检测器。您可能已经通过从网络上剪切粘贴创建了示例图像。示例图像必须是单色的,但不仅如此,它们还必须是单通道、8 位单色。如果您将样本 photoshop显示为单色,但未更改其通道配置,则 opencv_createsamples 将忽略它,如果它实际上有多个通道。

来源:~/apps/createsamples/utilities.cpp,函数 icvStartSampleDistortion()。

于 2015-09-15T20:07:17.920 回答
-1

这应该有效:

perl bin/createsamples.pl positives.txt negatives.txt samples 3000 "opencv_createsamples -bgcolor 0 -bgthresh 0 -maxxangle 0  -maxyangle 0 maxzangle 0 -maxidev 40 -w 32 -h 32"
于 2020-06-10T15:05:43.017 回答
-1

我有同样的问题。问题是我在文件名中有大写字母,但在终端代码中没有。

于 2018-01-04T21:59:39.587 回答