【发布时间】:2013-01-26 13:40:33
【问题描述】:
我想通过颜色深度缩放来减少颜色。
像这个例子:
第一张是CGA分辨率,第二张是EGA,第三张是HAM。 我想用 cv::LUT 来做,因为我认为这是更好的方法。 我可以用这段代码处理灰度:
Mat img = imread("test1.jpg", 0);
uchar* p;
Mat lookUpTable(1, 256, CV_8U);
p = lookUpTable.data;
for( int i = 0; i < 256; ++i)
p[i] = 16 * (i/16)
LUT(img, lookUpTable, reduced);
原文:
颜色减少:
但是如果我尝试用颜色来做,我会得到奇怪的结果..
使用此代码:
imgColor = imread("test1.jpg");
Mat reducedColor;
int n = 16;
for (int i=0; i<256; i++) {
uchar value = floor(i/n) * n;
cout << (int)value << endl;
lut.at<Vec3b>(i)[2]= (value >> 16) & 0xff;
lut.at<Vec3b>(i)[1]= (value >> 8) & 0xff;
lut.at<Vec3b>(i)[0]= value & 0xff;
}
LUT(imgColor, lut, reducedColor);
【问题讨论】: