角点检测

#include <stdio.h>
#include 
"cv.h"
#include 
"highgui.h"
#define max_corners 100
int main( int argc, char** argv )
{
    
int cornerCount=max_corners;
    CvPoint2D32f corners[max_corners];
    
double qualityLevel;
    
double minDistance;
    IplImage 
*srcImage = 0*grayImage = 0*corners1 = 0*corners2 = 0;
    
int i;
    CvScalar color 
= CV_RGB(255,0,0);
    
    cvNamedWindow( 
"image"1 ); // create HighGUI window with name "image"
    
    
//Load the image to be processed
    srcImage = cvLoadImage("..//..//c//pic3.png"1);
    
    grayImage 
= cvCreateImage(cvGetSize(srcImage), IPL_DEPTH_8U, 1);
    
    
//copy the source image to copy image after converting the format
    cvCvtColor(srcImage, grayImage, CV_BGR2GRAY);
    
    
//create empty images of same size as the copied images
    corners1= cvCreateImage(cvGetSize(srcImage), IPL_DEPTH_32F, 1);
    corners2
= cvCreateImage(cvGetSize(srcImage),IPL_DEPTH_32F, 1);
    
    cvGoodFeaturesToTrack (grayImage, corners1, corners2, corners,
        
&cornerCount, 0.0550);
    
    printf(
"num corners found: %d\n", cornerCount);
    
    
// draw circles at each corner location in the gray image and
    
// print out a list the corners 
    if(cornerCount>0
    
{
        
for (i=0; i<cornerCount; i++
        
{
            cvCircle(srcImage, cvPoint((
int)(corners[i].x), (int)(corners[i].y)), 6,
                color, 
2, CV_AA, 0);
        }

    }

    
    cvShowImage( 
"image", srcImage ); 
    
    cvReleaseImage(
&srcImage);
    cvReleaseImage(
&grayImage);
    cvReleaseImage(
&corners1);
    cvReleaseImage(
&corners2);
    
    cvWaitKey(
0); // wait for key. The function has
    return 0;
}


posted on 2007-12-23 13:14  wqj1212  阅读(732)  评论(1编辑  收藏  举报

导航