【opencv】访问mat元素

来源:互联网 发布:淘宝访客来源根据 编辑:程序博客网 时间:2024/04/30 02:05

opencv提供了cvGetND的方式访问Mat矩阵内的元素,但是在两个for循环遍历二维Mat元素时,调用函数访问需要不断的压栈和出栈,效率低,我们可以通过Mat结构体里的ptr指针进行访问,效率高。

#include<iostream>#include"highgui.h"#include"cv.h"#include"cxcore.h"using namespace std;void main(int argc,char* argv[]){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,2,CV_32FC3,data);//3通道int nChannels = 3;for(int x=0;x<mat.rows;++x){float *p = (float *)(mat.data.ptr + x*mat.step);//指向每一行的起始位置for(int y=0;y<mat.cols;++y){float value[3]; value[0] = *(p+y*nChannels); value[1] = *(p+y*nChannels+1); value[2] = *(p+y*nChannels+2);cout<<value[0]<<" "<<value[1]<<" "<<value[2]<<"";}cout<<endl;}}


0 0
原创粉丝点击