이전에는 문제 없었던 얼굴 및 눈 탐지를위한 코드를 작성했지만 현재는 문제가있어 프로그램에 문제가 발생하여 프로젝트가 작동을 멈춘다는 메시지가 표시됩니다. 다음 코드에서 모양과 주석 행 번호는 문제가있는 프로그램은Open CV Haarcascades가 제대로 작동하지 않습니다.
#include <opencv2/core/core.hpp>
#include "opencv2/objdetect/objdetect.hpp"
#include <opencv2/highgui/highgui.hpp>
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
/*Mat image=imread("im.jpg");
namedWindow("Display window", WINDOW_AUTOSIZE);// Create a window for display.
imshow("Display window", image); // Show our image inside it.
//imwrite("im2.jpg",image);// write the image stored in object image as im2.jpg
waitKey(0); // Wait for a keystroke in the window
return 0;*/
/*VideoCapture capture;
Mat frame;
capture.open(0);
if(capture.isOpened())
{
cout<<"success"<<endl;
while(1)
{
bool flag=capture.read(frame);
namedWindow("Display window", WINDOW_AUTOSIZE);
if(flag)
imshow("Display window", frame);
else
cout<<"failed";
waitKey(300);
}
}*/
//face detection
cout<<"i'm here";
CascadeClassifier face_cascade("C:\\opencv\\sources\\data\\haarcascades\\haarcascade_frontalface_alt.xml");
CascadeClassifier eye_cascade("C:\\opencv\\sources\\data\\haarcascades\\haarcascade_eye.xml");
Mat image=imread("subject3.jpg");
cout<<"i'm here";
Mat res;
resize(image, res, Size(800, 600), 0, 0, INTER_LINEAR);
Mat gray;
cvtColor(res,gray,COLOR_BGR2GRAY);
equalizeHist(gray, gray);
std::vector<Rect> faces;
std::vector<Rect> eyes;
face_cascade.detectMultiScale(gray,faces, 1.1, 2,0 | CASCADE_SCALE_IMAGE, Size(30, 30));//problem
Rect roi;
cout<<faces.size();
Mat crop;
Mat grayEye;
for(int i=0;i<faces.size();i++)
{
cout<<"flag2";
roi.x=faces[i].x;
roi.y=faces[i].y;
roi.width=faces[i].width;
roi.height=faces[i].height;
Point pt1(faces[i].x, faces[i].y);
Point pt2((faces[i].x + faces[i].height), (faces[i].y + faces[i].width));
crop=res(roi);
resize(crop, crop, Size(300, 300), 0, 0, INTER_LINEAR);
cvtColor(crop, grayEye, CV_BGR2GRAY);
equalizeHist(grayEye, grayEye);
eye_cascade.detectMultiScale(grayEye,eyes, 1.1, 2,0 | CASCADE_SCALE_IMAGE, Size(30, 30));
cout<<endl<<eyes.size();
for(int j=0;j<eyes.size();j++)
{
Point pnt1(eyes[j].x, eyes[j].y);
Point pnt2((eyes[j].x + eyes[j].height), (eyes[j].y + eyes[j].width));
rectangle(crop, pnt1, pnt2, Scalar(0, 255, 0), 2);
}
rectangle(res, pt1, pt2, Scalar(0, 255, 0), 2);
}
namedWindow("detected", WINDOW_AUTOSIZE);
imshow("detected",res);
waitKey(300);
imshow("detected",crop);
waitKey(0);
}
"이전에 잘 돌아갔다"면 코드가 자체적으로 작동하지 않기로 결정했습니다. 모든 종속성을 올바르게 설치하고 구성 했습니까? 'haarcascade_frontalface_alt.xml'이 올바르게 포맷 되었습니까? 마지막으로 코드를 사용한 이후로 라이브러리가 업데이트되었을 수 있습니다. 이전에 잘 작동 했습니까? – Sveltely
haarcascade_frontalface_alt.xml은 opencv에 의해 제공되며 나는 여전히 opencv와 동일한 버전을 가지고 있습니다 – Ahmed
글쎄, 어떤 OpenCV 버전을 사용하고 있습니까? opencv 예외를 잡으려고하면 어떻게됩니까? – Sveltely