Opencv学习笔记——普通坐标转化为极坐标

来源:互联网 发布:mac国际象棋在哪 编辑:程序博客网 时间:2024/05/14 04:32

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



0 0