Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 颜色转换_C++_Algorithm_Colors - Fatal编程技术网

C++ 颜色转换

C++ 颜色转换,c++,algorithm,colors,C++,Algorithm,Colors,我的程序从png文件中读取许多字母。字母为黑白背景,如下图所示 我希望我的程序给定这些字母的颜色值,能够以任何文本颜色和任何背景颜色打印字母。例如,我想在蓝色背景中使用绿色文本显示“a” 使用以下代码,我可以将文本颜色更改为任何颜色: Color c; c.r = original_black.r + ((255 - original_black.r) / 255.0) * desired_colour.r; c.g = original_black.g + ((255 - original

我的程序从png文件中读取许多字母。字母为黑白背景,如下图所示

我希望我的程序给定这些字母的颜色值,能够以任何文本颜色和任何背景颜色打印字母。例如,我想在蓝色背景中使用绿色文本显示“a”


使用以下代码,我可以将文本颜色更改为任何颜色:

Color c;
c.r = original_black.r + ((255 - original_black.r) / 255.0) * desired_colour.r;
c.g = original_black.g + ((255 - original_black.g) / 255.0) * desired_colour.g;
c.b = original_black.b + ((255 - original_black.b) / 255.0) * desired_colour.b;
结果:

问题:如何更新上述代码以将背景颜色更改为任何颜色,如下所示:


初始图片包含不同的颜色(可能类似于LCD显示器的ClearType像素渲染)。很难为所有前后颜色组合的彩色边缘像素选择可接受的方式。
所以我建议将初始图片的颜色转换为灰度。可能的公式之一:

Y = 0.299 R + 0.587 G + 0.114 B  [0..255 range]
并将此值用作alpha混合中的alpha

c.r = (foreground.r * Y  + (255 - Y) * background.r) / 255
等等