因此,我有20个阳性样本和500个阴性样本。我使用createsample实用工具创建了.vec文件。现在,当我尝试使用traincascade.exe实用工具训练分类器时,遇到以下错误:
opencv - OpenCV TrainCascade无法填充临时阶段-LMLPHP

我研究了许多解决方案,这些解决方案是给面临类似问题的人们的,但没有一个可行。

我尝试的操作:1.增加负样本数量2.检查Negative.txt文件中存储的负(或背景图像)的路径3.改变不同的参数。

这是有关路径的一些信息:我的工作目录包含以下文件:1. Traincascade.exe 2.正图像文件夹3. NegativeImageFolder 4. vec文件5. Negative.txt(在负图像文件夹中具有图像路径的文件)

我的Negative.txt文件具有负图像文件夹中图像的绝对文件路径。我还尝试将文件路径更改为以下格式:

NegativeImageFolder \ Image1.pgm

但是没用!我也尝试了正斜杠和反斜杠!

我已经用尽各种方法来更改文件路径或进行任何修改以使其正常工作!

最佳答案

首先:NumStages 1和maxDepth 1是故意的吗?
查看Opencv的源代码(cascadeclassifier.cppimagestorage.cpp),在函数中引发错误

bool CvCascadeClassifier::updateTrainingSet( double& acceptanceRatio)

negCount = 500个负样本无法填充。
以前,阳性样品一切正常(屏幕上印有pos数的行就是证明)。
当imgReader.getNeg(img)返回false时,无法填充源代码negCount,这意味着它无法提供任何图像,而这在源底片列表为空时发生。
因此,您必须将所有精力集中在为算法提供正确的负像列表上。
有两种方法可以解决此问题:确保读取Negative.txt,并且所有路径均规则,并且可以定期读取列表中的每个图像。
文件名是“Negative.txt”还是“Negatives.txt”?

无论如何,正负样本很少,您将无法训练任何功能,这仅有助于使您了解训练过程的工作方式。

关于opencv - OpenCV TrainCascade无法填充临时阶段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34076508/

10-11 03:24