今天学完了调整图像对比度与亮度之后,想与大家一起分享一下学习经验。
本程序可以通过两个滑动条分别调节图像的对比度与亮度。此外,还能分别处理单通道和三通道图像。特别说明 cv::Mat::convertTo函数也能实现此功能,且效率比访问像素值要高。(在本程序最后有具体实现,效果和访问像素值的一样)
主要的API:
1、saturate_cast<uchar>(value)确保值大小范围为0~255。
2、Mat.at<Vec3b>(y,x)[index]=value 给每个像素点每个通道赋值
3、void cv::Mat::convertTo ( OutputArray m,
int rtype,
double alpha = 1,
double beta = 0
) const
首先,我们先来介绍下原理吧。主要是利用以下公式:
本程序可以通过两个滑动条分别调节图像的对比度与亮度。此外,还能分别处理单通道和三通道图像。特别说明 cv::Mat::convertTo函数也能实现此功能,且效率比访问像素值要高。(在本程序最后有具体实现,效果和访问像素值的一样)
主要的API:
1、saturate_cast<uchar>(value)确保值大小范围为0~255。
2、Mat.at<Vec3b>(y,x)[index]=value 给每个像素点每个通道赋值
3、void cv::Mat::convertTo ( OutputArray m,
int rtype,
double alpha = 1,
double beta = 0
) const