C++ 如何进行单色线性插值?
我需要做单色的颜色插值(不是从一种颜色到另一种颜色的插值)。 例如,如果颜色为黄色(深黄色),则应在特定持续时间内插值为浅黄色,这意味着对于每个时间步,颜色插值应在颜色内发生,并且在该持续时间/时间步之后,应在特定时间步开始反向插值(浅黄色到深黄色),所以这个循环一直持续到用户通过请求命令停止它为止 基本上我需要改变亮度C++ 如何进行单色线性插值?,c++,image-processing,rgb,linear-interpolation,C++,Image Processing,Rgb,Linear Interpolation,我需要做单色的颜色插值(不是从一种颜色到另一种颜色的插值)。 例如,如果颜色为黄色(深黄色),则应在特定持续时间内插值为浅黄色,这意味着对于每个时间步,颜色插值应在颜色内发生,并且在该持续时间/时间步之后,应在特定时间步开始反向插值(浅黄色到深黄色),所以这个循环一直持续到用户通过请求命令停止它为止 基本上我需要改变亮度 using color_t = std::array<float,3>; // we can consider the value from 0
using color_t = std::array<float,3>;
// we can consider the value from 0-255
color_t yellow{1,1,0}; //as we increase yellow[2], it move towards light yellow
color_t green{0,1,0}; //dark green
// as we increase green[2],it move towards light green
color_t red{1,0,0};
// as we increase red[1],it move towards light red
color_t blue{0,0,1};
// as we increase blue[1],it move towards light blue
timeStepCount = 0;
time_step = 100;
void Linear(std::array<float,3>&color){
}
使用color\u t=std::数组;
我们可以从0到255考虑价值。
颜色为黄色{1,1,0}//当我们增加黄色[2]时,它向浅黄色移动
颜色为绿色{0,1,0}//深绿色
//当我们增加绿色[2]时,它会向浅绿色移动
红色{1,0,0};
//当我们增加红色[1]时,它会向浅红色移动
蓝色{0,0,1};
//当我们增加蓝色[1]时,它会向浅蓝色移动
timeStepCount=0;
时间步长=100;
空线性(标准::数组和颜色){
}
在上面的函数中,颜色的RGB值(比如黄色)将通过引用传递,因此对于每个时间步,我需要获得相同颜色的不同RGB值(正如我上面提到的,从暗到亮,从亮到暗)
我需要一个通用的线性函数,它适用于任何颜色
我知道我需要找到一个数学方程来解它。
但是,如果我得到了上述颜色的任何解决方案,也可以。为什么不将其转换为HSV颜色空间,然后您只需要更改其饱和度或值?您是否在询问如何分解颜色,以便可以改变其亮度?还是你在问线性插值的公式?还是别的什么?我不确定你知道什么,想知道什么know@divinas,您的回答是正确的,我需要更改亮度。请尝试在此处设置
hue=60
,saturation=1
,然后左右移动值
滑块以查看这是否是您想要的。设置hue=0
尝试红色而不是黄色。如果是这样,请在这里阅读@MarkSetchell,谢谢你,得到了一些提示。为什么不把它转换成HSV颜色空间,然后你只需要改变它的饱和度或值?你是在问如何分解你的颜色,这样你就可以改变它的亮度了吗?还是你在问线性插值的公式?还是别的什么?我不确定你知道什么,想知道什么know@divinas,您的回答是正确的,我需要更改亮度。请尝试在此处设置hue=60
,saturation=1
,然后左右移动值
滑块以查看这是否是您想要的。设置hue=0
尝试红色而不是黄色。如果是这样,请在这里阅读@MarkSetchell,谢谢你,我得到了一些提示。