我正在尝试创建像Photoshop这样的两种颜色的渐变.输入两种颜色的r,g,b,结果将是渐变的Mat.我尝试了至少5个小时,我找不到Photoshop的确切效果.我尝试创建我自己的公式(因为我在网上找不到任何公式),通过将RGB更改为HSV,然后将相对于总行数的色调差异添加到Mat的每一行,并且还减少强度到图像中心然后再增加它.代码是自我解释的.
另外,如果有人能告诉我创建渐变的确切公式,那将非常有用.
这是Photoshop渐变的样子

这就是我从我的代码中得到的
int r1, g1, b1, r2, g2, b2;
r1 = 255;
g1 = 0;
b1 = 0;
r2 = 0;
g2 = 255;
b2 = 0;
Mat input = imread("img.jpg");
Mat color1(input.size(), input.type());
Mat color2(input.size(), input.type());
vector<Mat> bgr1;
vector<Mat> bgr2;
split(color1, bgr1);
bgr1[0] = b1;
bgr1[1] = g1;
bgr1[2] = r1;
merge(bgr1, color1);
split(color2, bgr2);
bgr2[0] = b2;
bgr2[1] = g2;
bgr2[2] = r2;
merge(bgr2, color2);
vector<Mat> hls1;
vector<Mat> hls2;
cvtColor(color1, color1, CV_BGRA2BGR);
cvtColor(color1, color1, CV_BGR2HSV);
split(color1, …Run Code Online (Sandbox Code Playgroud)