Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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++_Image Processing_Rgb_Linear Interpolation - Fatal编程技术网

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,谢谢你,我得到了一些提示。