参考文章:http://blog.csdn.net/ljbkiss/article/details/7381208
文中对比了7种方法
都是针对灰度图的,若对RGB图操作,注意元素排列实际为:B G R的顺序
读入灰度图:imread("img.jpg",0);//0表示读为灰度图,或者用IMREAD_GRAYSCALE
Mat类中有个step数组,step[0]表示图像一行的字节数, step[1]表示每个像素的字节数
文艺做法:(推荐方法)(只能用于彩色图)
float getMatPix(Mat img,int row,int col,int BGR)//B G R:0 1 2
{
float *pts = img.ptr<float>(row);
return pts[3*col+BGR];
}
暴力做法:(速度更快)(彩色、灰度通用)
float* getMatPix(Mat img,int row,int col)//灰度图
{
int step0=img.step[0];
int step1=img.step[1];
return (float*)(img.data+row*step0 + col*step1) ;
}