怀旧效果处理
怀旧效果一般用在一些相片处理上,使整张相片呈棕褐色,仿佛相片已保存很久,已经发黄。方法是对每个像素的RGB分量按照公式(4-2)赋值:
//怀旧
Mat OldStyle(Mat src) {
Mat output(src.size(), CV_8UC3);
for (int i = 0; i < src.rows; i++) {
for (int j = 0; j < src.cols; j++) {
float R = src.at<Vec3b>(i, j)[2] * 0.393 + src.at<Vec3b>(i, j)[1] * 0.769 + src.at<Vec3b>(i, j)[0] * 0.189;
float G = src.at<Vec3b>(i, j)[2] * 0.349 + src.at<Vec3b>(i, j)[1] * 0.686 + src.at<Vec3b>(i, j)[0] * 0.168;
float B = src.at<Vec3b>(i, j)[2] * 0.272 + src.at<Vec3b>(i, j)[1] * 0.534 + src.at<Vec3b>(i, j)[0] * 0.131;
//防止某个颜色分量的值溢出
R = R > 255 ? 255 : R;
G = G > 255 ? 255 : G;
B = B > 255 ? 255 : B;
output.at<Vec3b>(i, j)[2] = R; //R
output.at<Vec3b>(i, j)[1] = G; //G
output.at<Vec3b>(i, j)[0] = B; //B
}
}
return output;
}