应用:将三通道彩色图的Mat数据,转存为单通道灰度图的unsigned char*数据:
Mat ImageMedia; //读取
unsigned char *pGrayImage; //存入
int xsize = ImageMedia.cols;
int ysize = ImageMedia.rows;
pGrayImage = new unsigned char[ xsize * ysize ];
for(int j = 0; j < ysize; j++){
auto ptr = ImageMedia.ptr<uchar>(j);
for(int i = 0; i < xsize; i++) {
pGrayImage[j * xsize + i] = (unsigned char)(
(float)(ptr[0] + ptr[1] + ptr[2])/3.0f);
ptr += 3;
}
}
注意的点:
1、图片数据如果是以uchar存储的,读取的时候一定要用<uchar>
2、ptr的方法是我百度了无数网页看到无数个版本后,第一个成功的。。。
因为IplImage和Mat读取图片数据的问题,踩了一堆堆的坑,无比心累。。。