2012年11月25日 星期日

【OpenCV】Harris角點偵測 Corner Detection

#include <stdafx.h>
#include "cvaux.h"
#include "highgui.h"
#include <stdio.h>

int main()
{
    IplImage *image;
    IplImage *src;
    IplImage *dst;
    IplImage *dst_8U;
    CvCapture *capture = cvCaptureFromCAM(0);
    bool createMemory = false;

    cvNamedWindow("Gray", 1);
    cvNamedWindow("CornerHarris", 1);
    while(1)
    {
        image = cvQueryFrame(capture);
        if(!createMemory)
        {
            src = cvCreateImage( cvGetSize(image), image->depth, 1);
            dst = cvCreateImage( cvGetSize(image), IPL_DEPTH_32F, 1);
            //影像輸出必須為32-bit
            dst_8U = cvCreateImage( cvGetSize(image), IPL_DEPTH_8U, 1);
            //影像最後須轉乘8-bit顯示,影像只能顯示0~255的值 
            createMemory = !createMemory;//記憶體宣告完成
        }
        cvCvtColor( image, src, CV_BGR2GRAY);
        cvCornerHarris(src ,dst, 5, 5, 0.04 );
        //cvCornerHarris( 來源影像, 輸出影像, block大小, sobel的kernel, k)
        //det(M) - k*trace(M)2 (2為平方),k = 0.04
        cvConvertScale( dst, dst_8U, 3000 );
        //cvConvertScale( 來源影像, 輸出影像, 矩陣純量數據(例x*3000), 矩陣位移數據)
        cvShowImage("Gray", src);
        cvShowImage("CornerHarris", dst_8U);
        cvWaitKey(5);
    }
    cvReleaseImage(&src);
    cvReleaseImage(&dst);
    cvReleaseImage(&dst_8U);
}



相關文章:OpenCV學習日記

0 意見:

張貼留言