您的位置:首页 > 运维架构

opencv学习笔记1:CV_MAT_ELEM_PTR与CV_MAT_ELEM的用法

2015-01-09 17:01 666 查看
从CvMat矩阵中得到一个元素最简单的方法就是利用CV_MAT_ELEM宏,这个宏包含4个参数,分别是传入矩阵,待提取的元素的类型,行数和列数。

而CV_MAT_ELEM_PTR宏包含3个参数,分别是传入矩阵,行数和列数,返回指定元素的指针。与CV_MAT_ELEM相比,后者在解引用之前将其转换成适当的数据类型,可以同时实现读取和设置元素的功能。

比如:

CvMat* mat = cvCreateMat(3,3,CV_8UC1);    //创建无符号char型单通道3*3矩阵
   
   *((char*)CV_MAT_ELEM_PTR(*mat,0,0)) = 1;  <span style="font-family: Arial, Helvetica, sans-serif;">//</span><span style="font-family: Arial, Helvetica, sans-serif;">CV_MAT_ELEM_PTR宏获取mat矩阵第0行第0列元素的指针后,将其转换成char*,解引用后在赋值1</span>
   *((char*)CV_MAT_ELEM_PTR(*mat,0,1)) = 2;
   *((char*)CV_MAT_ELEM_PTR(*mat,0,2)) = 3;

   *((char*)CV_MAT_ELEM_PTR(*mat,1,0)) = 4;
   *((char*)CV_MAT_ELEM_PTR(*mat,1,1)) = 5;
   *((char*)CV_MAT_ELEM_PTR(*mat,1,2)) = 6;

   *((char*)CV_MAT_ELEM_PTR(*mat,2,0)) = 7;
   *((char*)CV_MAT_ELEM_PTR(*mat,2,1)) = 8;
   *((char*)CV_MAT_ELEM_PTR(*mat,2,2)) = 9;

   int var;
   var = CV_MAT_ELEM(*mat,char,0,1);        //<span style="font-family: Arial, Helvetica, sans-serif;">CV_MAT_ELEM宏获取mat矩阵第0行第0列元素</span>
   cout<<"var="<<endl<<var<<endl;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: