OpenCV2 访问图像的各个像素有各种方法
若div为8,则原来RGB每个通道的256种颜色减少为32种。
若div为64,则原来RGB每个通道的256种颜色减少为4种,此时三通道所有能表示的颜色有4×4×4 = 64
种
看一个函数
C++: uchar* Mat::ptr(int i=0)
i 是行号,返回的是该行数据的指针。
在OpenCV中,一张3通道图像的一个像素点是按BGR的顺序存储的。
先来看看第一种访问方案
void colorReduce1(cv::Mat& image, cv::Mat& result, int
div=64){
int
nrow = image.rows;
int
ncol = image.cols * image.channels();
for(int
i=0; i
uchar*
data = image.ptr(i);
uchar*
data_out = result.ptr(i);
for(int
j=0; j
data_out[j]
= data[j]/div*div +div/2;
}}