[opencv]有关矩阵以及iplimage
来源:互联网 发布:7k7k皮卡堂盗号软件 编辑:程序博客网 时间:2024/06/08 10:10
访问双通道的Mat类型的方法
float data[18] = {30,60,40,60,50,40,67,88,55,33,22,97,59,69,32,46,25,45,};CvMat mat;cvInitMatHeader(&mat,3,3,CV_32FC2,data);//double have3*3 elementsint nChannels = 2;for(y = 0;y<mat.rows;y++){float *da = (float*)(mat.data.ptr + y*mat.step);//指针指向某一行的第一个元素for(x = 0;x<mat.cols;x++){float value[2];value[0] = *(da+x*nChannels);//由于每个元素包括nChannels个值 这里需要加几个可以找到第某个通道的值value[1] = *(da+x*nChannels+1);printf("(%f %f)",value[0],value[1]);}printf("\n");}
float *da = (float*)(mat.data.ptr + y*mat.step);//指针指向某一行的第一个元素
这句话如注释所说,先找到某一行,mat.data.ptr这个是矩阵最头的元素,他的类型是unsignedchar型指针,mat.step是两行mat之间的距离,加一个这个就可以跳一行的。但要注意的是,mat.data.ptr是一个字节的无符号整型数,每加1就会移动一个字节数。
如果变成(float*)(mat.data.ptr) + y*mat.step;就不对了,先变成了float型的指针,再加一个数字就移动了一个float大小的4字节,移多了……
value[0] = *(da+x*nChannels)这句话,da已经移到某一行的头,然后移到第x个元素需要加x*nChannels,因为每个元素有nChannels个表示通道的值。进而再加几,就是这个元素的第几个通道的值。
- [opencv]有关矩阵以及iplimage
- opencv IplImage矩阵元素赋值
- OpenCV常用的图像IplImage和矩阵CvMat操作总结
- 【opencv】IplImage详细说明以及访问每个元素的方法
- OpenCV Mat和IplImage比较以及相互转换
- OpenCV中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage
- opencv iplimage socket 传输
- opencv中的IplImage
- opencv Iplimage data access
- byte * 转opencv IplImage
- opencv iplimage socket 传输
- OpenCV---IplImage结构
- Opencv--Mat,IplImage数据类型
- [OpenCV] -- IplImage浅析
- opencv中的IplImage .
- OpenCV的IplImage图像格式
- opencv 图像显示IplImage
- OpenCV中IplImage图像格式
- vs2008下操作Excel
- dojo lazy Tree,使用JsonRest获取节点数据
- 在Eclipse中查看第三方源码(转)
- GIS库基础知识
- 在单元测试里测试添加数据到数据库
- [opencv]有关矩阵以及iplimage
- Redis云存储服务
- [MTK] [LCM]ili9806c和ili9805c开启ESD机制使用过程概率性出现上方闪线
- 使用openssl库EVP编程计算md5值
- Android BroadcastReceiver
- ORACLE RMAN异机异目录恢复
- IOS之支持高分辨率的显示屏(译文)
- 特殊dllcom组件调用方法
- linux命令1