PhotoShop的饱和度调节公式:
①计算每个像素点三基色最小值和最大值
②delta为两值之差 / 255,如果两值之差为0则不做操作
value为两值之和 / 255
③有RGB图像空间转化成HSL(H色调,S饱和度,L亮度)
L = value / 2
如果L < 0.5 则 S = delta / value;
否则 S = delta / (2 - value);
④Increment / 100 为饱和度
正值为提升饱和度,负值为降低饱和度。
根据不同公式得到新的rgb值。
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
#define max2(a, b) ( (a) > (b) ) ? (a) : (b)
#define max3(a,b,c) ( ( (a) > (b) ) ? max2( a, c) : max2( b, c ) )
#define min2(a, b) ( (a) < (b) ) ? (a) : (b)
#define min3(a,b,c) ( ( (a) < (b) ) ? min2( a, c ) : min2( b, c ) )
const int max_Increment = 200;
int Increment_value;
Mat image;
Mat src;
void on_Trackbar(int , void*)
{
float Increment= (Increment_value - 100)* 1.0/max_Increment;
image = src.clone();
for(int i = 0; i