在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了!