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 = ...
随机推荐
- Selenium基础知识(二)鼠标操作
一.鼠标操作 这个需要使用webdriver下的ActionChains类,这个类是操作鼠标操作的: from selenium.webdriver import ActionChains 鼠标操作可 ...
- 使用sqlite3解决IDEA中SVN更新提示cleanup却无法cleanup的问题
用idea开发项目,更新svn有时莫名其妙的出现 Error:Error performing cleanup for 'D:\SourceProject\XXXX': svn: E155004: T ...
- cmd 修改文件或目录的执行权限
设置当前目录及子目录(/r)下所有文件(/f *)的所有者为管理员(/a) takeown /f * /a /r 我试用如下: takeown /f C:\test /a /r 设置当前目录及子目录下 ...
- 从0开始搭建vue+webpack脚手架(一)
基于多数情况下都是使用vue-cli初始化项目, 却始终未去了解其原理.从零开始搭建,可以让自己更深层次的理解框架. 首先从最基本的npm 开始, 至于安装npm 和 node就不用再赘述了,那是前端 ...
- Oracle 23的用户管理
创建用户的语法格式 Create user <user_name> Identified by<password> Default tabespace<default t ...
- LeetCode12.整数转罗马数字
给定一个整数,将其转为罗马数字.输入确保在 1 到 3999 的范围内. 示例 1: 输入: 3 输出: "III" 示例 2: 输入: 4 输出: "IV" ...
- c# mongo 数组里对象更新
var queryDetail = new BsonDocument("cNo", doc.cNo); queryDetail.AddRan ...
- CSS radial-gradient() 函数实现渐变
值 描述 shape 确定圆的类型: ellipse (默认): 指定椭圆形的径向渐变. circle :指定圆形的径向渐变 size 定义渐变的大小,可能值: farthest-corner (默认 ...
- pyinstaller将python脚本生成exe
一.下载pyinstaller 二.生成exe 下载pyinstaller 1.在C:\python27\Scripts目录下打开cmd界面,执行命令:pip install PyInstaller ...
- 【转】Requests 官方中文文档 - 快速上手
迫不及待了吗?本页内容为如何入门 Requests 提供了很好的指引.其假设你已经安装了 Requests.如果还没有,去安装一节看看吧. 首先,确认一下: Requests 已安装 Requests ...