opencv从零开始——3. 了解通道,对比度,亮度
来源:互联网 发布:美加净防晒霜 知乎 编辑:程序博客网 时间:2024/06/06 17:10
1. 前言
常规来看,有3个通道,即RGB。
但是在Opencv中,编程的时候,顺序是BGR,即蓝色,绿色,红色,这一点不能弄错了。
Opencv可以对这3个通道,进行分别显示和调整。
2. 例子
代码如下:
#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <iostream>using namespace cv;using namespace std;bool MultiChannelBlending(int rgb);void ShowHelpText();//"/mnt/hgfs/code_for_Linux/code_opencv/test1/pic/v1.jpg"int main(int argc, char* argv[]){ MultiChannelBlending(2);// 0 - 蓝色, 1 - 绿色, 2 - 红色 waitKey(0); return 0;}bool MultiChannelBlending(int rgb){ Mat srcImage; Mat logoImage; vector<Mat> channels; Mat imageChannel; logoImage = imread("/mnt/hgfs/code_for_Linux/code_opencv/test1/pic/logo_kobe.jpg", 0); srcImage = imread("/mnt/hgfs/code_for_Linux/code_opencv/test1/pic/kobe2.jpg"); if (!logoImage.data || !srcImage.data) { return false; } split(srcImage, channels); //分离彩色通道 imageChannel = channels.at(rgb); addWeighted(imageChannel(Rect(400, 200, logoImage.cols, logoImage.rows)), 1.0, logoImage, 0.5, 0.0, imageChannel(Rect(400, 200, logoImage.cols, logoImage.rows)) ); merge(channels, srcImage); //将3个通道,重新组合成一个三通道 namedWindow("<1>科比 + logo"); imshow("<1>科比 + logo", srcImage); return true;}
3. 对比度和亮度
代码如下:
#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <iostream>using namespace std;using namespace cv;static void on_ContrastAndBright(int, void *);int g_nContrastValue;int g_nBrightValue;Mat g_srcImage, g_dstImage;// "/mnt/hgfs/code_for_Linux/code_opencv/test1/pic/"int main(){ g_srcImage = imread("/mnt/hgfs/code_for_Linux/code_opencv/test1/pic/4.jpg"); if (!g_srcImage.data) { return -1; } g_dstImage = Mat::zeros(g_srcImage.size(), g_srcImage.type()); g_nContrastValue = 80; g_nBrightValue = 80; namedWindow("[效果图]", 1); createTrackbar("对比度:", "[效果图]", &g_nContrastValue, 300, on_ContrastAndBright); createTrackbar("亮度:", "[效果图]", &g_nBrightValue, 200, on_ContrastAndBright); on_ContrastAndBright(g_nContrastValue, 0); on_ContrastAndBright(g_nBrightValue, 0); while (char(waitKey(1)) != 'q') {} return 0;}static void on_ContrastAndBright(int, void *){ namedWindow("[原图]", 1); for (int y = 0; y < g_srcImage.rows; ++y) { for (int x = 0; x < g_srcImage.cols; ++x) { for (int c = 0; c < 3; ++c) { g_dstImage.at<Vec3b>(y,x)[c] = saturate_cast<uchar>((g_nContrastValue*0.01)*g_srcImage.at<Vec3b>(y,x)[c] + g_nBrightValue); } } } imshow("[原图]", g_srcImage); imshow("[效果]", g_dstImage);}
效果如下,通过滑动条来调整对比度和亮度:
4. 参考文献
[1] 毛星云 冷雪飞. OpenCV3编程入门[M]. 电子工业出版社, 2015. 114页
---
1 0
- opencv从零开始——3. 了解通道,对比度,亮度
- opencv对比度亮度调整与通道分离
- opencv(10)---对比度亮度调整与通道分离与合并
- OpenCV学习——图像亮度、对比度调节
- opencv学习(4)——图像亮度、对比度调整
- opencv——轨迹条控制图像对比度与亮度
- opencv亮度对比度调节
- opencv 手动调整照片颜色小工具 对比度 亮度 BGR 各通道
- OpenCV 学习记录5 图像通道分离、对比度和亮度调整
- opencv 亮度与对比度调节
- OpenCV图像亮度、对比度调节
- opencv对比度及亮度,createTrackbar
- opencv调节图片亮度对比度
- OpenCV之亮度、对比度详解
- 【OpenCV】图片对比度和亮度
- 学习OpenCV(四) 改变图像的对比度和亮度——像素变换
- 学习OpenCV范例(五)——改变图像的对比度和亮度
- opencv学习笔记(十六)——图像对比度和亮度值
- XMU 1612 刘备闯三国之桃园结义 【二分】
- 1057: 天平平衡 [递归]
- 下一个爱因斯坦或许出自超级人工智能阶段
- SEH 进阶(1)
- NYOJ-171-聪明的kk(第三届河南省程序设计大赛D题(简单dp))
- opencv从零开始——3. 了解通道,对比度,亮度
- Is Subsequence
- 搜狗 输入法安装和问题解决
- 一份初级答卷:iOS (1)
- 找工作绕不过之内存管理
- 慕课:网页布局基础课程——学习笔记
- ios navigationController中界面跳转 :X–> A–>B–>C 返回 C–>A
- RabbitMQ官方文档翻译之Work Queues(二)
- Web环境中Spring MVC(一)