1. 理论
图片的转换就是将图片中的每个像素点经过一定的变换,得到新像素点,新像素点组合成一张新的图片。
改变图片对比度和亮度的变换如下:
其中α和β被称作增益参数(gain parameter)和偏差参数(bias parameter),分别控制对比度和亮度。
2. 实现代码
使用上述公式实现改变对比度和亮度的代码如下:
void ContrastAndBrightness(const Mat& Src,Mat& Dst,double alpha,double beta)
{
Dst = Mat::zeros(Src.size(),Src.type());
for (int y = 0; y < Src.rows; y++)
{
for (int x = 0; x < Src.cols; x++)
{
for (int c = 0; c < 3; c++)
{
Dst.at<Vec3b>(y,x)[c] = saturate_cast<uchar>(alpha * (Src.at<Vec3b>(y,x)[c]) + beta);
}
}
}
namedWindow("Src Image");
namedWindow("Dst Image");
imshow("Src Image",Src);
imshow("Dst Image",Dst);
waitKey();
}
使用OpenCV自带函数处理如下:
Src.convertTo(Dst, -1, 2.2, 20);
3. 处理结果
以下分别是alpha设置为1.5,beta设置为30时两种情况的处理结果,处理结果相差不多,但是使用时尽量调用OpenCV提供的函数。
4. 结束
原文链接: https://www.cnblogs.com/Reyzal/p/5021379.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/225417
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!