gpt4 book ai didi

c++ - OpenCV 3.4/c++ CascadeClassifier 使用旧的 xml 文件

转载 作者:太空宇宙 更新时间:2023-11-04 14:33:17 25 4
gpt4 key购买 nike

我有 OpenCV 3.4,我正在使用 C++ 在 Linux 计算机上进行开发。

我正在做一些人脸识别工作,想使用 Haar-Cascade 分类器。我找到了经过预训练的口鼻级联分类器,但它们采用“旧”.xml 格式,如下所示:

<opencv_storage>
<Boca_17stages type_id="opencv-haar-classifier">
<size>
25 15</size>
<stages>
<_>
<!-- stage 0 -->
<trees>
...

OpenCV 提供的 .xml 文件运行良好。这些文件是新版本,如下所示:

<opencv_storage>
<cascade type_id="opencv-cascade-classifier">
<stageType>BOOST</stageType>
<featureType>HAAR</featureType>
<height>20</height>
<width>20</width>
<stageParams>
...

我在不同的帖子中读到,OpenCV 仍然可以处理那些旧的 .xml 文件,甚至可以转换它们。但是当我调用 cv::CascadeClassifier::convert(const String& oldcascade, const String& newcascade) 时没有任何反应,它返回 false;

当我加载一个旧的 .xml 文件并尝试 detectMultiScale(... 我得到一个断言:

OpenCV Error: Assertion failed (!empty()) in detectMultiScale, file opencv-location/modules/objdetect/src/cascadedetect.cpp, line 1698
terminate called after throwing an instance of 'cv::Exception'
what(): opencv-location/modules/objdetect/src/cascadedetect.cpp:1698: error: (-215) !empty() in function detectMultiScale

我的代码看起来类似于:

 //Greyscale image myGrayMat is given
Vector<Rect> eyes;
Vector<Rect> mouth;
CasscadeClassifier eyes = CascadeClassifier ("haarcascade_frontalface_alt.xml")
CasscadeClassifier mouthCas1 = CascadeClassifier("mouth.xml");
CassCadeClassifier mouthCas2= CascadeClassifier();
mouthCas1.load("mouth.xml");

//nothing happens here, returns false, no file is created
CascadeClassifier::convert("mouth.xml","mouth_new.xml");

//works well:
eyesCas.detectMultiScale(myGrayMat,eyes,1.1,2,0|CV_HAAR_FIND_BIGGEST_OBJECT,Size(20,20));
//Assertion fail
mouthCas.detectMultiScale(myGrayMat,mouths,1.1,2,0|CV_HAAR_FIND_BIGGEST_OBJECT,Size(15,25));
//assertion fail
mouthCas.detectMultiScale(myGrayMat,mouths,1.1,2,0|CV_HAAR_FIND_BIGGEST_OBJECT,Size(15,25));

谁能帮帮我?或者任何人都可以转换 .xml 文件吗?那太好了。非常感谢!

最佳答案

CasscadeClassifier eyes = CascadeClassifier("haarcascade_frontalface_alt.xml")

cd /home/user/opencv-3.4.0/data/haarcascades

CasscadeClassifier eyes = CascadeClassifier ("/home/user/opencv-3.4.0/data/haarcascades/haarcascade_frontalface_alt.xml")

关于c++ - OpenCV 3.4/c++ CascadeClassifier 使用旧的 xml 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48230968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com