opencv类型转换

opencv中一些类型转换至关重要,对于后面学习opencv矩阵运算和后面图像处理起到打基础的作用。如果你的程序出现bug,有可能就是因为你类型转换不当。下面将简单介绍一下opencv中的Mat,CvMat、CVMat*和IpIImage之间的类型转换。

1、CvMat*<--->Mat的转换

1)CvMat*--->Mat

           CvMat* H=cvCreateMat(int rows,int cols,int type);
           cv::Mat H1=Mat(H,false);

2)CvMat*<---Mat

       CvMat* H=cvCreateMat(int rows,int cols,int type);
         Mat H1;
         H= (CvMat*)&H1;


2、Mat <---> CvMat

1) Mat ---> CvMat

          Mat H1;
          CvMat H2;
          CvMat H2= H1;


2)Mat <--- CvMat

          Mat H1;
          CvMat H2;
               H 1= Mat(&H2);


3、CvMat*<---CvMat

          CvMat H2;
          CvMat  *H= cvGetMat( H, &H2);


4、IplImage <----->cvMat

1)IplImage ----->cvMat

          IplImage* img cvCreateImage(cvGetSize(image),8,1);
          CvMat *  H=cvCreateMat(img->height,img->width,CV_64FC3);
          cvConvert(img,H);

2)IplImage <-----cvMat

//法一:cvGetImage函数
CvMat M;
IplImage* img = cvCreateImageHeader(M.size(), M.depth(), M.channels());
cvGetImage(&M, img);    //深拷贝:函数返回img
//也可写成
CvMat M;
IplImage* img = cvGetImage(&M, cvCreateImageHeader(M.size(), M.depth(), M.channels()));
//法二:cvConvert函数
CvMat M;
IplImage* img = cvCreateImage(M.size(), M.depth(), M.channels());
cvConvert(&M, img);    //深拷贝


5、double类型矩阵转换成CvMat*类型

 double mat[3][4] = { 1,1,1,1,
                                        2,2,2,2,
                                        3,3,3,3
                               };
                
                  CvMat* H = cvCreateMat(3, 4,CV_64FC1);
                cvInitMatHeader(H, 3, 4,CV_64FC1,mat);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值