OpenCV--调整图像亮度和对比度
2017-11-29 11:27
357 查看
调整图像亮度和对比度的操作属于像素操作–点操作:
g(i,j)=αf(i,j)+β,其中α>0,β是增益变量
实例代码:
注意如果我们觉得int b,g,r;不好,改成float类型那么我们会这样使用:
一旦我们运行就会产生错误:
解决方法:
在for循环之前添加代码:
g(i,j)=αf(i,j)+β,其中α>0,β是增益变量
实例代码:
//调整图像亮度和对比度 void Demo(){ Mat src,dest; src = imread("sanli.jpg"); if(!src.data){ cout << "图片打开失败!" << endl; return; } namedWindow("原图像",CV_WINDOW_AUTOSIZE); imshow("原图像",src); dest = Mat::zeros(src.size(),src.type()); int rows = src.rows; int cols = src.cols; int n = src.channels();//通道数 float alpha = 1.5; float beta = 30; for(int row = 0;row<rows;row++){ for(int col = 0;col<cols;col++){ if(n==3){ int b = src.at<Vec3b>(row,col)[0]; int g = src.at<Vec3b>(row,col)[1]; int r = src.at<Vec3b>(row,col)[2]; dest.at<Vec3b>(row,col)[0] = saturate_cast<uchar>(alpha*b+beta); dest.at<Vec3b>(row,col)[1] = saturate_cast<uchar>(alpha*g+beta); dest.at<Vec3b>(row,col)[2] = saturate_cast<uchar>(alpha*r+beta); }else{ if(n==1){ dest.at<uchar>(row,col) = saturate_cast<uchar>(alpha*src.at<uchar>(row,col)+beta); } } } } namedWindow("增强后",CV_WINDOW_AUTOSIZE); imshow("增强后",dest); cvWaitKey(); }
注意如果我们觉得int b,g,r;不好,改成float类型那么我们会这样使用:
float b = src.at<Vec3f>(row,col)[0];
float g = src.at<Vec3f>(row,col)[1];
float r = src.at<Vec3f>(row,col)[2];
一旦我们运行就会产生错误:
解决方法:
在for循环之前添加代码:
src.convertTo(src,CV_32F);
相关文章推荐
- OpenCV------创建Trackbar & 图像对比度、亮度值调整
- [转]【OpenCV入门教程之六】 创建Trackbar & 图像对比度、亮度值调整
- 基于OpenCV调整图像的对比度和亮度
- 【OpenCV入门教程之六】 创建Trackbar & 图像对比度、亮度值调整(转)
- OpenCV 图像对比度、亮度值调整示例程序
- OpenCV学习7--调整图像亮度和对比度
- opencv:图像对比度、亮度值调整(理论基础)
- 【OpenCV入门教程之六】 创建Trackbar & 图像对比度、亮度值调整
- 【OpenCV入门教程之六】 创建Trackbar & 图像对比度、亮度值调整
- 【OpenCV入门教程之六】 创建Trackbar & 图像对比度、亮度值调整
- 【OpenCV入门教程之六】 创建Trackbar & 图像对比度、亮度值调整
- opencv调整图像亮度与对比度
- [原创]opencv图像亮度/对比度调整实验
- opencv调整图像亮度与对比度
- OpenCV-调整图像的对比度、亮度
- 【OpenCV学习笔记】十二、图像的对比度和亮度调整及图像通道的分离与合并
- OpenCV 调整图像亮度以及对比度
- 【OpenCV_10】 创建滑动条Trackbar & 图像对比度、亮度值调整
- 【OpenCV入门教程之六】 创建Trackbar & 图像对比度、亮度值调整
- OPenCV3.2 调整图像对比度与亮度