Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从连续人脸检测中比较当前和以前的人脸_C++_Opencv_Image Processing - Fatal编程技术网

C++ 从连续人脸检测中比较当前和以前的人脸

C++ 从连续人脸检测中比较当前和以前的人脸,c++,opencv,image-processing,C++,Opencv,Image Processing,我正在进行人脸检测。我需要比较当前和以前(连续)的人脸。有人能帮我从连续的人脸检测中提取当前和以前的人脸吗?我对此一无所知 这是我的人脸检测代码 void facedetect(IplImage* image) { ct1++; cvNamedWindow("output"); int j=0,i,count=0,strsize; char numstr[50]; CvPoint ul,lr,w,h,ul1,lr1; CvRect *r; string path; IplImage* image

我正在进行人脸检测。我需要比较当前和以前(连续)的人脸。有人能帮我从连续的人脸检测中提取当前和以前的人脸吗?我对此一无所知

这是我的人脸检测代码

void facedetect(IplImage* image)
{
ct1++;
cvNamedWindow("output");
int j=0,i,count=0,strsize;
char numstr[50];
CvPoint ul,lr,w,h,ul1,lr1;
CvRect *r;
string path;
IplImage* image1;IplImage* tmpsize;IplImage* reimg;
CvHaarClassifierCascade* cascade=(CvHaarClassifierCascade*) cvLoad(cascade_name);                                                              
CvMemStorage* storage=cvCreateMemStorage(0);
const char *extract;
if(!cascade)
{
    cout<<"Coulid not load classifier cascade"<<endl;

}
if(cascade)
{         faces=cvHaarDetectObjects(image,cascade,storage,1.1,1,CV_HAAR_DO_CANNY_PRUNING,cvSize(10,10));
    for(int i=0;i<(faces ? faces->total : 0);i++)
    {
        string s1="im",re,rename,ex=".pgm";
        sprintf(numstr, "%d", k);
        re = s1 + numstr;
        rename=re+ex;
        char *extract1=new char[rename.size()+1];
        extract1[rename.size()]=0;  memcpy(extract1,rename.c_str(),rename.size());                              
        strsize=rename.size();
        r=(CvRect*) cvGetSeqElem(faces,i);
        ul.x=r->x;
        ul.y=r->y;
        w.x=r->width;
        h.y=r->height;
        lr.x=(r->x + r->width);
        lr.y=(r->y + r->height);
        cvSetImageROI(image,cvRect(ul.x,ul.y,w.x,h.y));
        image1=cvCreateImage(cvGetSize(image),image->depth,image->nChannels);
        cvCopy(image, image1, NULL);
        reimg=resizeImage(image1, 40, 40, true);
        saveImage(reimg,extract1);
        Mat img=cvarrToMat(reimg);
        //Mat img1=cvarrToMat();
        imshow("result",img); //this is the current image, but i need to get the previous image also.
        //readImag(img,"/home/athira/Image/folderr", path);
        cvResetImageROI(image);
        cvRectangle(image,ul,lr,CV_RGB(1,255,0),3,8,0);
        j++,count++;
        k++;
        arr[l]=ul.x;
        arr1[l]=ul.y;
        cout<<"frame"<<ct1<<" "<<"face"<<ct<<":"<<"x: "<<ul.x<<endl;
        cout<<"frame"<<ct1<<" "<<"face"<<ct<<":"<<"y: "<<ul.y<<endl;
        cout<<""<<endl;
        ct++;
        //compareImages(l,faces->total);
        //feature_extract(img,img1);
        l++;

    }
     width=image->width;
     height=image->height;
     resoltion=width*height;
     s=(float) 0.0301/100;
     diff=s*resoltion;
    cvShowImage("output",image);
    cvWaitKey(0);       
}       
}
void facedetect(IplImage*图像)
{
ct1++;
CVD(“输出”);
int j=0,i,count=0,strsize;
char numstr[50];
CVU点ul、lr、w、h、ul1、lr1;
CvRect*r;
字符串路径;
IplImage*image1;IplImage*tmpsize;IplImage*reimg;
CvHaarClassifierCascade*级联=(CvHaarClassifierCascade*)cvLoad(级联_名称);
CvMemStorage*storage=cvCreateMemStorage(0);
常量字符*提取;
如果(!级联)
{
库尔特;
lr.x=(r->x+r->宽度);
lr.y=(r->y+r->高度);
cvSetImageROI(图像,cvRect(ul.x,ul.y,w.x,h.y));
image1=cvCreateImage(cvGetSize(图像),图像->深度,图像->通道);
cvCopy(图像,图像1,空);
reimg=调整图像大小(图像1,40,40,真);
saveImage(reimg,extract1);
Mat img=cvarrToMat(reimg);
//Mat img1=cvarrToMat();
imshow(“result”,img);//这是当前图像,但我还需要获取上一个图像。
//readImag(img,“/home/athira/Image/folderr”,路径);
cvResetImageROI(图像);
CV矩形(图像、ul、lr、CV_RGB(1255,0)、3,8,0);
j++,count++;
k++;
arr[l]=ul.x;
arr1[l]=ul.y;

请把这个世界变成一个更好的地方,用C++ API代替过时的C,请给我一个答案。