int mainImage() { int i,ipts_size = 0; float tclock; clock_t start, end; Ipoint IpArray[N]; IplImage *img = cvLoadImage("imgs/lena.bmp",1); // Detect and describe interest points in the image start = clock(); ipts_size = surfDetDes(img, IpArray, 0, 5, 4, 2, 0.0004f, N); end = clock(); tclock = (float)(end - start) / CLOCKS_PER_SEC; printf("OpenSURF found: %d interest points \n",ipts_size); printf("OpenSURF took: %f seconds \n",tclock); // Draw the detected points drawIpoints(img, IpArray,0, ipts_size); // Display the result showImage(img); free(IpArray); return 0; }
int mainImage(void) { // Declare Ipoints and other stuff IpVec ipts; // Make image as a Mat; convert to IplImage for OpenSURF library actions cv::Mat mimg=cv::imread("OpenSURF/imgs/sf.jpg", CV_LOAD_IMAGE_COLOR); IplImage iimg=mimg; IplImage* img=&iimg; // Detect and describe interest points in the image clock_t start = clock(); surfDetDes(img, ipts, false, 5, 4, 2, 0.0004f); clock_t end = clock(); std::cout<< "OpenSURF found: " << ipts.size() << " interest points" << std::endl; std::cout<< "OpenSURF took: " << float(end - start) / CLOCKS_PER_SEC << " seconds" << std::endl; // Draw the detected points drawIpoints(img, ipts); // Display the result showImage(img); return 0; }
int mainVideo(void) { // Initialise capture device CvCapture* capture = cvCaptureFromCAM( CV_CAP_ANY ); if(!capture) error("No Capture"); // Initialise video writer //cv::VideoWriter vw("c:\\out.avi", CV_FOURCC('D','I','V','X'),10,cvSize(320,240),1); //vw << img; // Create a window cvNamedWindow("OpenSURF", CV_WINDOW_AUTOSIZE ); // Declare Ipoints and other stuff IpVec ipts; IplImage *img=NULL; // Main capture loop while( 1 ) { // Grab frame from the capture source img = cvQueryFrame(capture); // Extract surf points surfDetDes(img, ipts, false, 4, 4, 2, 0.004f); // Draw the detected points drawIpoints(img, ipts); // Draw the FPS figure drawFPS(img); // Display the result cvShowImage("OpenSURF", img); // If ESC key pressed exit loop if( (cvWaitKey(10) & 255) == 27 ) break; } cvReleaseCapture( &capture ); cvDestroyWindow( "OpenSURF" ); return 0; }
int mainImage(IplImage *img) { // Declare Ipoints and other stuff IpVec ipts; // Detect and describe interest points in the image clock_t start = clock(); surfDetDes(img, ipts, true, 5, 4, 2, 0.01f); clock_t end = clock(); std::cout<< "OpenSURF found: " << ipts.size() << " interest points" << std::endl; std::cout<< "OpenSURF took: " << float(end - start) / CLOCKS_PER_SEC << " seconds" << std::endl; // Draw the detected points drawIpoints(img, ipts); // Display the result showImage(img); return 0; }
int mainImage(void) { // Declare Ipoints and other stuff IpVec ipts; IplImage *img=cvLoadImage("Images/img1.jpg"); // Detect and describe interest points in the image { surfDetDes(img, ipts, false, 3, 4, 2, 0.0004f); } std::cout<< "OpenSURF found: " << ipts.size() << " interest points" << std::endl; //std::cout<< "OpenSURF took: min/avg/max/stddev " << time_min << "/" << time_avg << "/" << time_max << "/" << stddev // << std::endl; // Draw the detected points drawIpoints(img, ipts); // Display the result //showImage(img); cvSaveImage("result.jpg",img); return 0; }
int mainMatch(void) { // Initialise capture device CvCapture* capture = cvCaptureFromCAM( CV_CAP_ANY ); if(!capture) error("No Capture"); // Declare Ipoints and other stuff IpPairVec matches; IpVec ipts, ref_ipts; // This is the reference object we wish to find in video frame // Replace the line below with IplImage *img = cvLoadImage("imgs/object.jpg"); // where object.jpg is the planar object to be located in the video IplImage *img = cvLoadImage("../imgs/object.jpg"); if (img == NULL) error("Need to load reference image in order to run matching procedure"); CvPoint src_corners[4] = {{0,0}, {img->width,0}, {img->width, img->height}, {0, img->height}}; CvPoint dst_corners[4]; // Extract reference object Ipoints surfDetDes(img, ref_ipts, false, 3, 4, 3, 0.004f); drawIpoints(img, ref_ipts); showImage(img); // Create a window cvNamedWindow("OpenSURF", CV_WINDOW_AUTOSIZE ); // Main capture loop while( true ) { // Grab frame from the capture source img = cvQueryFrame(capture); // Detect and describe interest points in the frame surfDetDes(img, ipts, false, 3, 4, 3, 0.004f); // Fill match vector getMatches(ipts,ref_ipts,matches); // This call finds where the object corners should be in the frame if (translateCorners(matches, src_corners, dst_corners)) { // Draw box around object for(int i = 0; i < 4; i++ ) { CvPoint r1 = dst_corners[i%4]; CvPoint r2 = dst_corners[(i+1)%4]; cvLine( img, cvPoint(r1.x, r1.y), cvPoint(r2.x, r2.y), cvScalar(255,255,255), 3 ); } for (unsigned int i = 0; i < matches.size(); ++i) drawIpoint(img, matches[i].first); } // Draw the FPS figure drawFPS(img); // Display the result cvShowImage("OpenSURF", img); // If ESC key pressed exit loop if( (cvWaitKey(10) & 255) == 27 ) break; } // Release the capture device cvReleaseCapture( &capture ); cvDestroyWindow( "OpenSURF" ); return 0; }
int mainStaticMatchStrengths() { bool matchGlobalOrientations = true; // Make images as Mats; convert to IplImage for OpenSURF library actions cv::Mat mimg1, mimg2; mimg1=cv::imread("OpenSURF/imgs/img1.jpg", CV_LOAD_IMAGE_COLOR); mimg2=cv::imread("OpenSURF/imgs/img2.jpg", CV_LOAD_IMAGE_COLOR); IplImage iimg1, iimg2; iimg1=mimg1; iimg2=mimg2; IplImage *img1, *img2; img1 = &iimg1; img2 = &iimg2; IpVec ipts1, ipts2; surfDetDes(img1,ipts1,false,4,4,2,0.0001f,matchGlobalOrientations); surfDetDes(img2,ipts2,false,4,4,2,0.0001f,matchGlobalOrientations); MatchVec matches; getMatchesSymmetric(ipts1,ipts2,matches); IpVec mpts1, mpts2; const int & w = img1->width; for (unsigned int i = 0; i < matches.size(); ++i) { float strengthOverThreshold = 1 - matches[i].second; // /MATCH_THRESHOLD; strengthOverThreshold*=255; CvScalar clr = cvScalar(strengthOverThreshold,strengthOverThreshold,strengthOverThreshold); clr = cvScalar(255,255,255); //drawPoint(img1,matches[i].first.first,clr); //drawPoint(img2,matches[i].first.second,clr), mpts1.push_back(matches[i].first.first); mpts2.push_back(matches[i].first.second); cvLine(img1,cvPoint(matches[i].first.first.x,matches[i].first.first.y),cvPoint(matches[i].first.second.x+w,matches[i].first.second.y), clr,1); cvLine(img2,cvPoint(matches[i].first.first.x-w,matches[i].first.first.y),cvPoint(matches[i].first.second.x,matches[i].first.second.y), clr,1); } drawIpoints(img1,mpts1); drawIpoints(img2,mpts2); std::cout<< "Matches: " << matches.size() << std::endl; cvNamedWindow("1", CV_WINDOW_AUTOSIZE ); cvNamedWindow("2", CV_WINDOW_AUTOSIZE ); cvShowImage("1", img1); cvShowImage("2",img2); cvWaitKey(0); // NOW DO IT AGAIN! cv::Mat mimg3, mimg4; mimg3=cv::imread("OpenSURF/imgs/img1.jpg", CV_LOAD_IMAGE_COLOR); mimg4=cv::imread("OpenSURF/imgs/img2.jpg", CV_LOAD_IMAGE_COLOR); IplImage iimg3, iimg4; iimg3=mimg3; iimg4=mimg4; IplImage *img3, *img4; img3 = &iimg3; img4 = &iimg4; IpVec ipts3, ipts4; surfDetDes(img3,ipts3,false,4,4,2,0.0001f,!matchGlobalOrientations); surfDetDes(img4,ipts4,false,4,4,2,0.0001f,!matchGlobalOrientations); matches.clear(); getMatchesSymmetric(ipts3,ipts4,matches); IpVec mpts3, mpts4; for (unsigned int i = 0; i < matches.size(); ++i) { float strengthOverThreshold = 1 - matches[i].second; // /MATCH_THRESHOLD; strengthOverThreshold*=255; CvScalar clr = cvScalar(strengthOverThreshold,strengthOverThreshold,strengthOverThreshold); clr = cvScalar(255,255,255); //drawPoint(img1,matches[i].first.first,clr); //drawPoint(img2,matches[i].first.second,clr), mpts3.push_back(matches[i].first.first); mpts4.push_back(matches[i].first.second); cvLine(img3,cvPoint(matches[i].first.first.x,matches[i].first.first.y),cvPoint(matches[i].first.second.x+w,matches[i].first.second.y), clr,1); cvLine(img4,cvPoint(matches[i].first.first.x-w,matches[i].first.first.y),cvPoint(matches[i].first.second.x,matches[i].first.second.y), clr,1); } drawIpoints(img3,mpts3); drawIpoints(img4,mpts4); std::cout<< "Matches: " << matches.size() << std::endl; cvNamedWindow("3", CV_WINDOW_AUTOSIZE ); cvNamedWindow("4", CV_WINDOW_AUTOSIZE ); cvShowImage("3", img3); cvShowImage("4",img4); cvWaitKey(0); return 0; }