【知识点梳理
1、防止溢出
在opencv中,对计算式进行计算的时候经常会出现值溢出(上溢出或下溢出),尤其是对无符号数值进行加减操作时。opencv中使用Saturation Casting“转换很好的解决这个问题,使用saturate_cast<>(),opencv对数组或矩阵进行代数运算或其他操作时,会自动检测underflows and overflows,当结果上溢出时就会用最大的可用值代替,当下溢出时就会用最小的可用值代替。
2、创建全零矩阵图像
Mat new_image = Mat::zeros( image.size(), image.type() );
说明:新图像大小与类型与原图像相同,像素值为零。
3、图像线性变换
image.convertTo(new_image, -1, alpha, beta);
说明:相当于new_image =saturate_cast(alpha(∗this)(x,y)+beta).第二个参数是输出图像的类型或深度,如果为负则与输入图像的类型或深度相同。
4、图像指数变换
5、创建滑动控件
CV_EXPORTS int createTrackbar(const string& trackbarname, const string& winname,
int* value, int count,
TrackbarCallback onChange = 0,
void* userdata = 0);
参数一:trackbarname:滑动控件的名称;
参数二:winname:滑动控件用于依附的图像窗口的名称;
参数三:value:初始化阈值;
参数四:count:滑动控件的刻度范围;
参数五:TrackbarCallback是回调函数

本文介绍了在OpenCV中如何处理图像的对比度和亮度,包括防止数值溢出的技巧、创建全零矩阵图像的方法以及线性变换和指数变换的实现。通过示例代码展示了如何使用convertTo()函数进行图像亮度和对比度的调整。
最低0.47元/天 解锁文章
6376

被折叠的 条评论
为什么被折叠?



