opencv2中访问像素的简单方法-自定义一个宏CV_MAT_ELEM2

利用Mat的step[0],step[1]访问像素的行列,自定义一个宏CV_MAT_ELEM2(src,dtype,y,x),src是待访问的Mat,dtype是src的数据类型(int,float,char等),

访问像素位置是y行、x列。

宏定义如下:

#define CV_MAT_ELEM2(src,dtype,y,x)    (dtype*)(src.data+src.step[0]*(y)+src.step[1]*(x) )

演示代码如下所示:

#include <iostream>
#include<opencv2/opencv.hpp>
using namespace cv;
using namespace std;

#define CV_MAT_ELEM2(src,dtype,y,x) 
        (dtype*)(src.data+src.step[0]*y+src.step[1]*x)

int main()
{
        Mat pp=Mat(3,3,CV_32FC3,Scalar(1,2,3));
        float* em;//元素指针
        for(int i=0;i<pp.rows;i++)
        {
            for(int j=0;j<pp.cols;j++)
            {
                em=CV_MAT_ELEM2(pp,float,i,j);
                cout<<em[0]<<","<<em[1]<<","<<em[2]<<endl;
            }
        }

    return 0;
}

  

 
原文地址:https://www.cnblogs.com/phoenixdsg/p/6944205.html