corner.cpp
上传用户:banwdc
上传日期:2016-06-25
资源大小:2871k
文件大小:2k
源码类别:

OpenCV

开发平台:

Visual C++

  1. #include <stdio.h>
  2. #include "cv.h"
  3. #include "highgui.h"
  4. #define max_corners 100
  5. int main( int argc, char** argv )
  6. {
  7.     int cornerCount=max_corners;
  8.     CvPoint2D32f corners[max_corners];
  9.     IplImage *srcImage = 0, *grayImage = 0, *corners1 = 0, *corners2 = 0;
  10.     int i;
  11.     CvScalar color = CV_RGB(255,0,0);
  12.     char* filename = argc == 2 ? argv[1] : (char*)"..//..//c//pic3.png";  // 注意相对路径
  13.     
  14.         cvNamedWindow( "image", 1 ); // create HighGUI window with name "image"
  15.     
  16.     //Load the image to be processed
  17.     srcImage = cvLoadImage(filename, 1);
  18.     
  19.     grayImage = cvCreateImage(cvGetSize(srcImage), IPL_DEPTH_8U, 1);
  20.     
  21.     //copy the source image to copy image after converting the format
  22.     cvCvtColor(srcImage, grayImage, CV_BGR2GRAY);
  23.     
  24.     //create empty images of same size as the copied images
  25.     corners1= cvCreateImage(cvGetSize(srcImage), IPL_DEPTH_32F, 1);
  26.     corners2= cvCreateImage(cvGetSize(srcImage),IPL_DEPTH_32F, 1);
  27.     
  28.     cvGoodFeaturesToTrack (grayImage, corners1, 
  29.         corners2, corners,
  30.         &cornerCount, 0.05,
  31.         5, 
  32.         0,
  33.         3,  // block size
  34.         0,  // not use harris
  35.         0.4 );
  36.     
  37.     printf("num corners found: %dn", cornerCount);
  38.     
  39.     // draw circles at each corner location in the gray image and
  40.     //print out a list the corners 
  41.     if(cornerCount>0) 
  42.     {
  43.         for (i=0; i<cornerCount; i++) 
  44.         {
  45.             cvCircle(srcImage, cvPoint((int)(corners[i].x), (int)(corners[i].y)), 6,
  46.                 color, 2, CV_AA, 0);
  47.         }
  48.     }
  49.     
  50.     cvShowImage( "image", srcImage ); 
  51.     
  52.     cvReleaseImage(&srcImage);
  53.     cvReleaseImage(&grayImage);
  54.     cvReleaseImage(&corners1);
  55.     cvReleaseImage(&corners2);
  56.     
  57.     cvWaitKey(0); // wait for key. The function has
  58.     return 0;
  59. }