透視變換

在csdn有博客,可這裏查詢積分得是正值,所以沒辦法只有寫一片嘍~

很好的學習地方!

寫篇關於Opencv數極變換的例子把。

當然Opencv對於極座標變換也是有基礎的函數的,這個跟前面說的兩個變換一樣。一個是仿射變換cvWarpAffine(),透視變換中用到的重映射cvRemap();另一個是拉普拉斯變換和霍夫圓霍夫線中的卷積cvFilter2D()和sobel()。

 #include <cv.h>
#include <highgui.h>

int main(int argc, char** argv)
{
    IplImage* src;
   double M;
    if( argc == 3 && ((src=cvLoadImage(argv[1],1)) != 0 ))
    {
      M = atof(argv[2]);
        IplImage* dst = cvCreateImage( cvGetSize(src), 8, 3 );
        IplImage* src2 = cvCreateImage( cvGetSize(src), 8, 3 );
        cvLogPolar( src,  dst, cvPoint2D32f(src->width/2,src->height/2),  //變換的中心點是源圖片的中心點
                    M, CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS );//M縮放比例
        cvLogPolar( dst, src2, cvPoint2D32f(src->width/2,src->height/2),//再次變回來
                    M, CV_INTER_LINEAR+CV_WARP_INVERSE_MAP );
        cvNamedWindow( "log-polar", 1 );
        cvShowImage( "log-polar", dst );
        cvNamedWindow( "inverse log-polar", 1 );
        cvShowImage( "inverse log-polar", src2 );
        cvWaitKey();
    }
    return 0;
}
終於可以不用把原圖片像色彩變換那種的改變成單通道的灰度圖(可以看出左邊的變換並不需要),也不用canny了!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章