void ImageAnalysis::AnalysisImage(IplImage *nw)
{
    double minx,maxy,maxx,miny,time;
    IplImage* rf=cvCreateImage(cvSize(720,576),nw->depth,nw->nChannels);
    IplImage* prevrf=cvCreateImage(cvSize(720,576),prev->depth,prev->nChannels);
    cvCopy(nw,rf);
    cvCopy(prev,prevrf);
    time=clock();
    for(int i=0;i<ZoneNum;i++)
    {
        minx=fmin(fmin(ParkRegionCoord[i][0].x,ParkRegionCoord[i][1].x),fmin(ParkRegionCoord[i][2].x,ParkRegionCoord[i][3].x));
        maxy=fmax(fmax(ParkRegionCoord[i][0].y,ParkRegionCoord[i][1].y),fmax(ParkRegionCoord[i][2].y,ParkRegionCoord[i][3].y));
        miny=fmin(fmin(ParkRegionCoord[i][0].y,ParkRegionCoord[i][1].y),fmin(ParkRegionCoord[i][2].y,ParkRegionCoord[i][3].y));
        maxx=fmax(fmax(ParkRegionCoord[i][0].x,ParkRegionCoord[i][1].x),fmax(ParkRegionCoord[i][2].x,ParkRegionCoord[i][3].x));
        cvSetImageROI(rf,cvRect(minx,miny,maxx-minx,maxy-miny));
        cvSetImageROI(prevrf,cvRect(minx,miny,maxx-minx,maxy-miny));

        rf=maskImage(rf,i);
        prevrf=maskImage(prevrf,i);
        HashCompare(rf,prevrf);
        MakeDecision(HashCompare(rf,prevrf),HistogramCompare(rf,prevrf),ImageDiff(rf,prevrf),i);

        cvResetImageROI(prevrf);
        cvResetImageROI(rf);
        cvCopy(nw,rf);
        cvCopy(prev,prevrf);
    }
    cvReleaseImage(&rf);
    cvReleaseImage(&prevrf);
    cvCopy(nw,prev);//болван, незабывай, что в opencv копируется указатель, если не делать cvCopy
    qDebug()<<"Time to compute:"<<(clock()-time)/CLOCKS_PER_SEC;
}
Esempio n. 2
0
void ac::ImageDiffSubFilter(cv::Mat &frame) {
    if(blend_set == false || subfilter == -1 || draw_strings[subfilter] == "ImageDiffSubFilter")
        return;
    cv::Mat copy1 = frame.clone(), reimage;
    cv::resize(blend_image, reimage, frame.size());
    CallFilter(subfilter, copy1);
    ImageDiff(copy1);
    AlphaBlend(copy1, reimage, frame, 0.5);
    AddInvert(frame);
    
}