小编Haf*_*man的帖子

openCV中的线性颜色渐变

我正在尝试创建像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)

c++ android opencv image-processing computer-vision

2
推荐指数
1
解决办法
2769
查看次数

标签 统计

android ×1

c++ ×1

computer-vision ×1

image-processing ×1

opencv ×1