Opencv學習筆記——普通座標轉化爲極座標

使用Opencv自帶的函數cvCartToPolar可以將座標從普通座標轉化爲極座標,也可以利用cvPolarToCart轉化回來,但在轉化過程中我們可以發現,這函數是以y座標中作爲軸座標的。具體代碼如下:

#include "stdio.h"
#include "cv.h"
#include "highgui.h"
int main(int argc, char* argv[])
{   
    //建立兩個分別存儲x和y座標的矩陣
	CvMat *x=cvCreateMat(3,3,CV_32FC1);
	CvMat *y=cvCreateMat(3,3,CV_32FC1);
	printf("初始的座標點爲:\n");
    for(int i=0;i<3;i++)
	{
		for(int j=0;j<3;j++)
		{   //分別對x和y進行賦值
			cvmSet(x,i,j,(float)(i+j));
			/*
			x是要賦值的矩陣,i,j表示矩陣的下標,後面的是要賦得值才,類型與矩陣類型相同
			*/
            cvmSet(y,i,j,(float)(i+j+5));
			printf("(%f,",(float)(i+j));
			printf("%f) ",(float)(i+j+5));

		}
		printf("\n");
	}
    //定義極座標的兩個座標值
    CvMat *magnitude=cvCreateMat(3,3,CV_32FC1);
	CvMat *angle=cvCreateMat(3,3,CV_32FC1);

	cvCartToPolar(x,y,magnitude,angle,1);
	/*
	將普通座標轉化爲極座標
	x,y,magnitude,angle分別爲矩陣而且相互對應,1是指角度用360度數表示,0是角度用弧度表示
	*/
	double s1,s2;
    printf("極座標的值爲:\n");
   for( i=0;i<3;i++)
	{
		for(int j=0;j<3;j++)
		{
			printf("(%lf,",cvmGet(magnitude,i,j));//獲取矩陣中的指定元素
            printf("%lf) ",cvmGet(angle,i,j));
		}
		printf("\n");
	}
	return 0;
}
具體結果如下:



發佈了45 篇原創文章 · 獲贊 3 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章