【OpenCV学习笔记】十二、图像的对比度和亮度调整及图像通道的分离与合并
2017-03-14 18:53
756 查看
这一章讲了如下内容:
1.图像对比度及亮度调整
2.图像通道的分离与合并
先上ppt:
代码1:图像对比度与亮度调整
运行结果:
代码2:图像通道分离与合并
运行结果:
1.图像对比度及亮度调整
2.图像通道的分离与合并
先上ppt:
代码1:图像对比度与亮度调整
///图像对比度调整与亮度调整
//逻辑:遍历每个像素,对每个像素的每个通道进行g(i,j) = a*f(i,j)+b的操作。 //结合滑动条,两个滑动条的位置分别对应公式中a和b.注意溢出保护(saturate_cast方法)
#include "opencv2/opencv.hpp" using namespace cv; #define WIN_NAME "输出图像" //宏定义 Mat srcImg; Mat dstImg; int Contrase_Value = 20; int Bright_Value = 20; void OnChange(int, void*) { for (int i = 0; i < srcImg.rows; i++) { for (int j = 0; j < srcImg.cols; j++) { dstImg.at<Vec3b>(i, j)[0] = saturate_cast<uchar>(Contrase_Value * 0.01 * srcImg.at<Vec3b>(i, j)[0] + Bright_Value); dstImg.at<Vec3b>(i, j)[1] = saturate_cast<uchar>(Contrase_Value * 0.01 * srcImg.at<Vec3b>(i, j)[1] + Bright_Value); dstImg.at<Vec3b>(i, j)[2] = saturate_cast<uchar>(Contrase_Value * 0.01 * srcImg.at<Vec3b>(i, j)[2] + Bright_Value); } } //定义“原图”窗口,显示原图,CV_WINDOW_NORMAL:正常大小显示,用户可改变大小窗口 namedWindow("原图", CV_WINDOW_NORMAL); imshow("原图", srcImg); imshow(WIN_NAME, dstImg); } void main() { srcImg = imread("1.jpg"); dstImg = Mat::zeros(srcImg.size(), srcImg.type()); //Mat::zeros(); //将矩阵元素都置为0 //Mat::ones(); //将矩阵元素都置为1 //定义WIN_NAME窗口,显示输出图像,CV_WINDOW_NORMAL:正常大小显示,用户可改变大小窗口 namedWindow(WIN_NAME, CV_WINDOW_NORMAL); 4000 //定义调整对比度的滑动条 createTrackbar("对比度", WIN_NAME, &Contrase_Value, 300, OnChange, 0); //定义调整亮度的滑动条 //同对比度滑动条依附于同一个窗口,且共用一个OnChange函数 createTrackbar("亮 度", WIN_NAME, &Bright_Value, 200, OnChange, 0); OnChange(Contrase_Value, 0); //回调函数初始化(使得WIN_NAME窗口一开始就有图像) OnChange(Bright_Value, 0); waitKey(0); }
运行结果:
代码2:图像通道分离与合并
///图像通道分离与合并
//通道分离(split函数),通道合并(merge函数)
#include "opencv2/opencv.hpp" using namespace cv; void main() { Mat img = imread("2.jpg"); Mat dst; vector<Mat> channels; //通道分离,将图像通道分离存入Mat类型的vector容器channels中 split(img, channels); Mat blueChannel = channels.at(0);//同channels[0] Mat greenChannel = channels.at(1); Mat redChannel = channels.at(2); //imshow("blue", blueChannel); //imshow("green", greenChannel); //imshow("red", redChannel); //通道合并,将channels中图像的三个通道,合并进图像dst中,dst同原图一样. merge(channels, dst); imshow("dst", dst); waitKey(0); }
运行结果:
相关文章推荐
- OpenCV 学习记录5 图像通道分离、对比度和亮度调整
- 【opencv学习笔记七】访问图像中的像素与图像亮度对比度调整
- opencv(10)---对比度亮度调整与通道分离与合并
- OpenCV学习笔记(14)创建Trackbar & 图像对比度、亮度值调整
- OpenCV之Python学习笔记(1)(2): 图像的载入、显示和保存 图像元素的访问、通道分离与合并
- opencv学习笔记之调整图像的亮度与对比度
- Opencv学习笔记(2)模块,图像读取、显示、叠加、融合、颜色分离、亮度、对比度
- opencv学习笔记-4、调整图像亮度和对比度
- opencv学习笔记-图像对比度、亮度调节
- 【基于C++和Python的Opencv3学习笔记之颜色空间缩减、ROI提取及多通道分离合并】
- OpenCV学习(十四)之彩色图像RGB通道的分离、合并与显示
- 【学习OpenCV】图像的亮度/对比度调整
- openCV学习笔记 (六) : 改变图像的对比度和亮度
- OpenCV学习:创建Trackbar & 图像对比度、亮度值调整
- OpenCV学习7--调整图像亮度和对比度
- opencv学习笔记9 改变图像的对比度和亮度
- OpenCV学习(十四)之彩色图像RGB通道的分离、合并与显示
- Python笔记——python OpenCV 图像通道分离和合并
- OpenCV学习-3:图像亮度和对比度调整
- OpenCV学习第七篇:调整图像亮度和对比度