opencv学习之路(9)、对比度亮度调整与通道分离
一、对比度亮度调整
#include<opencv2/opencv.hpp>
using namespace cv; #define WIN_NAME "输出图像"
Mat src,dst;
int contrast=,bright=; void onChange(int,void*){
for (int i = ; i < src.rows; i++)
{
for (int j = ; j < src.cols; j++)
{
//saturate_cast<uchar> 溢出保护:if(data<0) data=0; if(data>255) data=255;
dst.at<Vec3b>(i,j)[]=saturate_cast<uchar>(src.at<Vec3b>(i,j)[]*contrast*0.01+bright);
dst.at<Vec3b>(i,j)[]=saturate_cast<uchar>(src.at<Vec3b>(i,j)[]*contrast*0.01+bright);
dst.at<Vec3b>(i,j)[]=saturate_cast<uchar>(src.at<Vec3b>(i,j)[]*contrast*0.01+bright);
}
}
imshow("原图",src);
imshow(WIN_NAME,dst);
} void main(){
src=imread("E://1.jpg");
dst=Mat::zeros(src.size(),src.type());
//Mat::zeros();//将矩阵元素置为0
//Mat::ones();//置1
namedWindow(WIN_NAME,CV_WINDOW_AUTOSIZE);
createTrackbar("对比度",WIN_NAME,&contrast,,onChange,);
createTrackbar("亮 度",WIN_NAME,&bright,,onChange,); onChange(contrast,);//回调函数初始化
onChange(bright,); waitKey(); }

二、通道分离与合并
#include<opencv2/opencv.hpp>
using namespace cv; void main(){
Mat img=imread("E://2.jpg");
Mat dst;
vector<Mat>channels;//定义Mat类型的向量 split(img,channels);//通道分离
Mat blue=channels.at();
Mat green=channels.at();
Mat red=channels.at(); threshold(blue,blue,,,THRESH_BINARY);//二值化:大于200的赋值255,小于200的赋值0
threshold(green,green,,,THRESH_BINARY);
threshold(red,red,,,THRESH_BINARY); merge(channels,dst);//通道合并 imshow("原图",img);
imshow("blue",blue);
imshow("green",green);
imshow("red",red);
imshow("dst",dst);
waitKey();
}

opencv学习之路(9)、对比度亮度调整与通道分离的更多相关文章
- opencv学习之路(38)、Mat像素统计基础——均值,标准差,协方差;特征值,特征向量
本文部分内容转自 https://www.cnblogs.com/chaosimple/p/3182157.html 一.统计学概念 二.为什么需要协方差 三.协方差矩阵 注:上述协方差矩阵还需要除以 ...
- OpenCV 学习笔记(8)彩色图像RGB通道的分离、合并与显示
https://blog.csdn.net/ZYTTAE/article/details/42234989 由于算法的需要,需要把彩色图像的R.G.B值分离出来,OpenCV中正好有split() 和 ...
- Opencv学习之路—Opencv下基于HOG特征的KNN算法分类训练
在计算机视觉研究当中,HOG算法和LBP算法算是基础算法,但是却十分重要.后期很多图像特征提取的算法都是基于HOG和LBP,所以了解和掌握HOG,是学习计算机视觉的前提和基础. HOG算法的原理很多资 ...
- OpenCV 学习之路(1)
OpenCV的第一个代码: #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #i ...
- opencv学习之路(41)、人脸识别
一.人脸检测并采集个人图像 //take_photo.cpp #include<opencv2/opencv.hpp> using namespace cv; using namespac ...
- opencv学习之路(40)、人脸识别算法——EigenFace、FisherFace、LBPH
一.人脸识别算法之特征脸方法(Eigenface) 1.原理介绍及数据收集 特征脸方法主要是基于PCA降维实现. 详细介绍和主要思想可以参考 http://blog.csdn.net/u0100066 ...
- opencv学习之路(39)、PCA
一.PCA理论介绍 网上已经有许多介绍pca原理的博客,这里就不重复介绍了.详情可参考 http://blog.csdn.net/zhongkelee/article/details/44064401 ...
- opencv学习之路(37)、运动物体检测(二)
一.运动物体轮廓椭圆拟合及中心 #include "opencv2/opencv.hpp" #include<iostream> using namespace std ...
- opencv学习之路(36)、运动物体检测(一)
一.简介 二.背景减法 图片说明 #include "opencv2/opencv.hpp"using namespace cv; void main() { Mat img1 = ...
随机推荐
- Redis:C#使用Redis(1)
一.安装 1.下载安装包: 官方网站:redis.io 官方推荐windows版本:https://github.com/MSOpenTech/redis 2:下载压缩包,解压后如下 redis-se ...
- bowtie2 Linux安装
目前最新版本为2.3.2,网址为:https://sourceforge.net/projects/bowtie-bio/files/bowtie2/2.3.2 安装分为简单的下载可执行文件和源编译安 ...
- js中变量提升(一个是变量,一个是函数表达式都会存在变量提升,函数声明不存在)
一.变量提升 在ES6之前,JavaScript没有块级作用域(一对花括号{}即为一个块级作用域),只有全局作用域和函数作用域.变量提升即将变量声明提升到它所在作用域的最开始的部分.上个简历的例子如: ...
- Cocos Creator scrollview添加事件的两种方法
scrollview添加事件 方法一这种方法添加的事件回调和使用编辑器添加的事件回调是一样的,通过代码添加, 你需要首先构造一个 cc.Component.EventHandler 对象,然后设置好对 ...
- Tomcat任意文件上传漏洞CVE-2017-12615
文章来源:https://blog.csdn.net/qq1124794084/article/details/78044756 漏洞影响的tomcat版本为tomcat7.0.0-7.0.81版本 ...
- 从0开始搭建vue+webpack脚手架(三)
在从0开始搭建vue+webpack脚手架(二)中已经基本完成了开发环境的配置.当开发完成后,我们需要将完成的项目进行打包,接下来对打包做一些优化: 运行 $ npm run build 可生成dis ...
- jQuery-手风琴效果-2
动画 高级函数:基于底层函数又进行了封装 两大块:简化版的动画函数和万能动画函数 简化版动画函数 显示/隐藏$().show; $(...).hide(); 强调:无参数的show()/hide()使 ...
- c++引用和指针的彻底理解
★ 相同点: 1. 都是地址的概念: 指针指向一块内存,它的内容是所指内存的地址:引用是某块内存的别名. ★ 区别: 1. 指针是一个实体,而引用仅是个别名: 2. 引用使用时无需解引用(*),指 ...
- MVC 中的Model对象
最近实在是太忙,客户丢了一个框架,没有任何说明文档,更没有所谓的技术支持,一直忙于学习,最后好歹还有点头绪,话不多说,MVC的学习是不能拉下的,就当前小白的我,认为MVC中的M并不是想象中的那样简单, ...
- python 安装pandas
1.pandas有啥用 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具.pand ...