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; }
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); }