OpenCv error: Assertion faild (!empty()) in cv::CascadeClassifier::detectMultiScale
Hi Friends I'm trying to do face detection using OpenCv 3.0.0, I think something is wrong because when I run my project I face this error:
Unhandled exception at at 0x00007FFD630CAB78 in shapeDetection.exe: Microsoft C++ exception: cv::Exception at memory location 0x000000D92794F810.
and in console it's printed:
OpenCv error: Assertion faild (!empty()) in cv::CascadeClassifier::detectMultiScale
I read different posts about it, but none of them could help me. here is my code:
// shapeDetection.cpp : Defines the entry point for the console application. //
#include "stdafx.h"
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\imgproc\imgproc.hpp>
#include <opencv2\objdetect\objdetect.hpp>
#include <iostream>
using namespace cv;
using namespace std;
//load face cascade
CascadeClassifier faceCascade;
void detection(Mat frame)
{
//Detect faces
vector<Rect> faces;
faceCascade.detectMultiScale(frame,faces,1.1, 3, CV_HAAR_FIND_BIGGEST_OBJECT|CV_HAAR_SCALE_IMAGE,Size(300,300) );
// Draw circles on the detected faces
for( int i = 0; i < faces.size(); i++ )
{
Point center( faces[i].x + faces[i].width*0.5, faces[i].y + faces[i].height*0.5 );
ellipse( frame, center, Size( faces[i].width*0.5, faces[i].height*0.5), 0, 0, 360, Scalar( 255, 0, 255 ), 4, 8, 0 );
}
imshow("Video",frame);
}
int _tmain(int argc, _TCHAR* argv[])
{
VideoCapture cap(0);
if(!cap.isOpened())
return -1;
//creating window
namedWindow("Video",CV_WINDOW_AUTOSIZE);
faceCascade.load("C:\opencv\sources\data\haarcascades_cuda\haarcascade_frontalface_alt2.xml");
Mat frame;
while (1)
{
cap.read(frame);
waitKey(30);
if(!frame.empty())
{
detection(frame);
}
else
{
cout<<"there is no frame"<<endl;
}
}
return 0;
}
@berak it's Solved,Thank you so much
i don't recall why there's a haarcascades_cuda and a haarcascades version, but try the non-cuda one.
sure,It's done dear,Thanks for your solution
@berak I faced this Error too : OpenCV Error: Assertion failed (axes.width >= 0 && axest.height >= 0 && .... How can I solve it?
@berak, reason for a cuda and non cuda version is the difference in implementation. The non cuda ones are updated to the traincascade interface and new model structure, but the GPU variant is not able to use those new models yet.
^^ thanks for the highlight !
@berak so what should I do?
one of the assertions here failed