在OpenCV中减少每个像素的颜色数量减少的基本颜色减少算法如何工作?

时间:2019-03-23 20:58:03

标签: c++ opencv

我减少图像中的颜色数量,此示例来自OpenCV书 利用整数除法将底色除法到最接近的较低整数。

可以,但是我不明白这是目的

void colorReduce(Mat image, int div){
    //div the factor
    int rows = image.rows;
    int cols = image.cols;
    int numPxC = cols * image.channels();
    for (int i = 0; i < rows; i++) {
        uchar* data = image.ptr<uchar>(i);
        for (int j = 0; j < numPxC; j++) {
            data[j] = data[j] / div * div + div / 2;
        }
    }
}

我实际上不明白那是什么,目的是什么。

数据[j] =数据[j] / div * div + div / 2;

如果数据[j] = 255,并且div = 64。

结果将是:(255/64)* 64 +(64/2)=(3.9843)* 64 +(32)= 255 + 32 = 287。

方法 255/64,然后* 64?,结果超出了uchar限制 请帮助我,谢谢

0 个答案:

没有答案