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;
}
具体结果如下:

Opencv学习笔记——普通坐标转化为极坐标_第1张图片

你可能感兴趣的:(Opencv学习笔记)