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 = ...
随机推荐
- python SMTP attachment
发邮件,现在还有不带附件的吗? 开个玩笑,你要带,就得如此下边这样办 //test.py import smtplib from email.mime.text import MIMEText fro ...
- python class 2
//test.py 1 class Employee: 2 'all employee' 3 empCount = 0 4 def __init__(s ...
- C# 语言 - 一个优雅的分页实现
这篇文章介绍分页对象的封装,如何优雅的对数据进行分页. 先上调用代码: 我们希望能在一个Enumerable对象后面直接.ToPagedList(pageIndex,pageSize)这样优雅的调用分 ...
- __init__.py的作用
__init__.py 文件定义了包的属性和方法.其实它可以什么也不定义:可以只是一个空文件,但是必须存在.如果 __init__.py 不存在,这个目录就仅仅是一个目录,而不是一个包,它就不能被导入 ...
- Shader1.0学习笔记之SetTexture
1.语法 SetTexture [TextureName] {Texture Block} 2.Texture block combine 命令 combine src1 * src2 越乘越暗 c ...
- Python 1.安装
Python是一种开源语言,有很多第三方库. 1. Python3 及相关组件下载及安装 a. Python3下载:https://www.python.org/downloads/->点击以下 ...
- Spring源码阅读(三)
上一讲我们谈到单例生产关键方法getSingleton.getSingleton方法由DefaultSingletonBeanRegistry类实现.我们的抽象工厂AbstractBeanFactor ...
- Mybatis 在 insert 之后想获取自增的主键 id
记录一次傻逼的问题, 自己把自己蠢哭:Mybatis 在 insert 之后想获取自增的主键 id,但却总是返回1 错误说明: 返回的1是影响的行数,并不是自增的主键id: 想要获取自增主键id,需要 ...
- CentOS7 安装 mysql8
本文主要从以下几个方面对自己在centos7 下安装mysql8过程做如下总结: CentOS7 安装mysql8 步骤: window下的Navicat 连接MySql8: 涉及到的Linux命令 ...
- GUI相应鼠标事件
function varargout = GUI18(varargin) % GUI18 MATLAB code for GUI18.fig % GUI18, by itself, creates a ...