Qt+OpenCV联合开发(八)--参数传递调整亮度、对比度

一、简述addWeighted函数

1、作用:可以将两张相同大小,相同类型的图片融合。可以实现图片的多种特效

2、c++原型:

参数一:src1,表示第一个原数组(图片1)

参数二:alpha,第一个数组元素权重

参数三:src2,第二个原数组(图片2)

参数四:beta,第二个数组元素权重

参数五:gamma,一个加到权重总和上的标量值(见下面公式)。不要太大,不然图片一片白。总和等于255以上就是纯白色了

参数六:dst,输出的图片,它和输入的两个数组拥有相同的尺寸和通道数

参数七:dtype ,输出阵列的可选深度,有默认值-1;当两个输入数组具有相同的深度时,这个参数设置为-1

addweighted函数的计算公式:
dst = src1[i] * alpha + src2[i] * beta + gamma

二、代码

//功能:参数传递调整亮度、对比度
static void adjust_light(int pos ,void* userdata)
{
    Mat img = *((Mat*)userdata);
    Mat dst = Mat::zeros(img.size(),img.type());
    Mat m = Mat::zeros(img.size(),img.type());
    m = Scalar(pos,pos,pos);
    addWeighted(img,1.0,m,0,pos,dst);//融合两张图
    imshow("adjust_light_and_contrast",dst);
}
static void adjust_contrast(int pos, void* userdata)
{
    Mat img = *((Mat*)userdata);
    Mat dst = Mat::zeros(img.size(),img.type());
    Mat m = Mat::zeros(img.size(),img.type());
    m = Scalar(pos,pos,pos);
    double contrast = pos /100.0;
    addWeighted(img,contrast,m,0.0,0,dst);//融合两张图
    imshow("adjust_light_and_contrast",dst);
}
void test1::adjust_light_contrast(Mat &image)
{
    namedWindow("adjust_light_and_contrast",WINDOW_FREERATIO);
    int lightValue = 50;
    int maxValue = 100;
    int contrastValue = 100;
    createTrackbar("light-bar","adjust_light_and_contrast",&lightValue,maxValue,adjust_light,(void *)(&image));
    createTrackbar("contrast-bar","adjust_light_and_contrast",&contrastValue,maxValue+100,adjust_contrast,(void *)(&image));
    adjust_light(50,&image);


}

 注:

1、createTrackbar函数的用法在上篇文章有阐述,

2、如果没有写 adjust_light(50,&image);这一句将会导致adjust_light_and_contrast窗口一开始为黑色

main中测试: 

三、实现效果

input窗口为原始图片

 动图如下:

原创不易,转载请注明出处:

https://blog.csdn.net/hml111666/article/details/122719305

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ze言

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值