/** * @brief ImageProcessing::imageProcess * @param rawImage * @return */ QImage ImageProcessing::imageProcess(QImage *rawImage) { this->rawImage = *rawImage; resultImage = rawImage; // threshold getThresholdImage(resultImage); // morpology if( enableMorpology == true ) { for(int i=0; i<erodeNum; i++) erode(resultImage); for(int i=0; i<dilateNum; i++) dilate(resultImage); } // get objects position getObjectsPosition(resultImage); ball->updatePosition(ballPos); robot->updatePosition(robotPos); emit signalFindBall(ballPos); emit signalFindRobot(robotPos); // predict predictCourse(resultImage); // tracking ballTracking(); if( ball->found() == true ) { emit signalImageProcessCompleted(); } // draw fence drawFence(); return *resultImage; }
int main() { CvCapture* capture = 0; printf("Initializing Capture...\n"); // capture = cvCreateFileCapture("http://192.168.1.100/videostream.cgi?user=admin&pwd=123456"); capture = cvCaptureFromCAM( CV_CAP_ANY ); printf("Camera found\n"); if(!capture){printf("Could not initialize camera...\n");} printf("Capture Success!!!\n"); cvNamedWindow("Video", CV_WINDOW_AUTOSIZE); cvResizeWindow("Video", 640,480); cvMoveWindow("Video", 0,100); cvNamedWindow("HSV",CV_WINDOW_AUTOSIZE); cvNamedWindow("ROI"); cvMoveWindow("ROI", 700,100); int state = 0; int track = 1; int change= 2; int reset = 3; int clear = 4; while(1) { // Hold frame captured from camera IplImage* img = cvQueryFrame(capture); if(!img){printf("Image Query Failed");break;} key = cvWaitKey(10); if(key=='t'){state = track;} if(key=='c'){state = change;} if(key=='r'){state = reset;} if(key=='q'){state = clear;} key = cvWaitKey(10); if(state == track) { printf("Tracking\n"); imgRed = getThresholdImage(img); imgPos = getMoment(img); } key = cvWaitKey(10); if(state == change) { cvRectangle(img,cvPoint(250,300),cvPoint(400,200),CV_RGB(255,0,0),5,8); cvWaitKey(30); cvShowImage("Video",img); //printf("Getting Color\n"); IplImage* imgColor = getColor(img); state = 0; } key = cvWaitKey(10); if(state == reset) { printf("Resetting\n"); minC = hsv_min; maxC = hsv_max; state = 0; } if(state == clear) { printf("Paused\n"); state = 0; } else { key = cvWaitKey(10); } cvShowImage("HSV", imgRed); cvShowImage("Video", img); cvReleaseImage(&imgPos); cvReleaseImage(&imgRed); if ( (cvWaitKey(10) & 255) == 27 ) break; //key = cvWaitKey(10); } cvDestroyWindow("Video"); cvDestroyWindow("HSV"); cvDestroyWindow("ROI"); cvReleaseCapture(&capture); }