opencv学习之路(9)、对比度亮度调整与通道分离

一、对比度亮度调整

 1 #include<opencv2/opencv.hpp>
 2 using namespace cv;
 3
 4 #define WIN_NAME "输出图像"
 5 Mat src,dst;
 6 int contrast=20,bright=20;
 7
 8 void onChange(int,void*){
 9     for (int i = 0; i < src.rows; i++)
10     {
11         for (int j = 0; j < src.cols; j++)
12         {
13             //saturate_cast<uchar>    溢出保护:if(data<0) data=0;    if(data>255) data=255;
14             dst.at<Vec3b>(i,j)[0]=saturate_cast<uchar>(src.at<Vec3b>(i,j)[0]*contrast*0.01+bright);
15             dst.at<Vec3b>(i,j)[1]=saturate_cast<uchar>(src.at<Vec3b>(i,j)[1]*contrast*0.01+bright);
16             dst.at<Vec3b>(i,j)[2]=saturate_cast<uchar>(src.at<Vec3b>(i,j)[2]*contrast*0.01+bright);
17         }
18     }
19     imshow("原图",src);
20     imshow(WIN_NAME,dst);
21 }
22
23 void main(){
24     src=imread("E://1.jpg");
25     dst=Mat::zeros(src.size(),src.type());
26     //Mat::zeros();//将矩阵元素置为0
27     //Mat::ones();//置1
28     namedWindow(WIN_NAME,CV_WINDOW_AUTOSIZE);
29     createTrackbar("对比度",WIN_NAME,&contrast,300,onChange,0);
30     createTrackbar("亮  度",WIN_NAME,&bright,200,onChange,0);
31
32     onChange(contrast,0);//回调函数初始化
33     onChange(bright,0);
34
35     waitKey(0);
36
37 }

二、通道分离与合并

 1 #include<opencv2/opencv.hpp>
 2 using namespace cv;
 3
 4 void main(){
 5     Mat img=imread("E://2.jpg");
 6     Mat dst;
 7     vector<Mat>channels;//定义Mat类型的向量
 8
 9     split(img,channels);//通道分离
10     Mat blue=channels.at(0);
11     Mat green=channels.at(1);
12     Mat red=channels.at(2);
13
14     threshold(blue,blue,200,255,THRESH_BINARY);//二值化:大于200的赋值255,小于200的赋值0
15     threshold(green,green,200,255,THRESH_BINARY);
16     threshold(red,red,200,255,THRESH_BINARY);
17
18     merge(channels,dst);//通道合并
19
20     imshow("原图",img);
21     imshow("blue",blue);
22     imshow("green",green);
23     imshow("red",red);
24     imshow("dst",dst);
25     waitKey(0);
26 }

时间: 2024-10-14 04:06:49

opencv学习之路(9)、对比度亮度调整与通道分离的相关文章

Opencv学习之路—Opencv下基于HOG特征的KNN算法分类训练

在计算机视觉研究当中,HOG算法和LBP算法算是基础算法,但是却十分重要.后期很多图像特征提取的算法都是基于HOG和LBP,所以了解和掌握HOG,是学习计算机视觉的前提和基础. HOG算法的原理很多资料都可以查到,简单来说,就是将图像分成一个cell,通过对每个cell的像素进行梯度处理,进而根据梯度方向和梯度幅度来得到cell的图像特征.随后,将每个cell的图像特征连接起来,得到一个BLock的特征,进而得到一张图片的特征.Opencv当中自带HOG算法,可以直接调用,进行图像的特征提取.但

opencv学习之路(21)、模板匹配及应用

一.模板匹配概念 二.单模板匹配 1 #include "opencv2/opencv.hpp" 2 #include <iostream> 3 using namespace std; 4 using namespace cv; 5 6 void main() 7 { 8 Mat temp=imread("E://mu.jpg"); 9 Mat src=imread("E://lena.jpg"); 10 Mat dst=src.c

opencv学习之路(25)、轮廓查找与绘制(四)——正外接矩形

一.简介 二.外接矩形的查找绘制 1 #include "opencv2/opencv.hpp" 2 using namespace cv; 3 void main() 4 { 5 //外接矩形的查找绘制 6 Mat srcImg =imread("E://12.jpg"); 7 imshow("src",srcImg); 8 Mat dstImg = srcImg.clone(); //原图备份 9 cvtColor(srcImg, srcIm

opencv学习之路(20)、直方图应用

一.直方图均衡化--equalizeHist() 1 #include "opencv2/opencv.hpp" 2 using namespace cv; 3 4 void main() 5 { 6 Mat srcImg = imread("E://02.jpg", 0); //以灰度方式打开,需要输入单通道图像 7 imshow("src", srcImg); 8 Mat dstImg; //均衡化后的图像 9 equalizeHist(sr

opencv学习之路(17)、边缘检测

一.概述 二.canny边缘检测 1 #include "opencv2/opencv.hpp" 2 using namespace cv; 3 4 void main() 5 { 6 //Canny边缘检测 7 Mat srcImg = imread("E://1.png",0); //0表示以灰度图读入,彩色图和灰度图进行边缘检测时略有不同,建议使用灰度图 8 //medianBlur(srcImg, srcImg,5);//中值滤波 9 imshow(&quo

opencv学习之路(5)、鼠标和滑动条操作

一.鼠标事件 1 #include<opencv2/opencv.hpp> 2 #include<iostream> 3 using namespace cv; 4 using namespace std; 5 6 Mat img(500,500,CV_8UC3,Scalar(255,255,255));//定义成全局变量 7 8 void OnMouse(int event,int x,int y,int flags,void* param){ 9 if(event==CV_EV

opencv学习之路(4)、Mat类介绍,基本绘图函数

一.Mat类创建 1 #include <opencv2/opencv.hpp> 2 using namespace cv; 3 4 void main(){ 5 Mat img1=imread("E://1.jpg"); 6 Mat img2(img1); 7 Mat img3=img1; 8 Mat img4=img1.clone(); 9 Mat img5; 10 img1.copyTo(img5); 11 12 cvtColor(img1,img1,CV_BGR2H

opencv学习之路(26)、轮廓查找与绘制(五)——最小外接矩形

一.简介 二.轮廓最小外接矩形的绘制 1 #include "opencv2/opencv.hpp" 2 using namespace cv; 3 4 void main() 5 { 6 //轮廓最小外接矩形的绘制 7 Mat srcImg = imread("E://00.png"); 8 Mat dstImg = srcImg.clone(); 9 cvtColor(srcImg, srcImg, CV_BGR2GRAY); 10 threshold(srcI

opencv学习之路(13)、图像阈值化

一.图像阈值化简介 二.固定阈值 三.自适应阈值 1 #include<opencv2/opencv.hpp> 2 using namespace cv; 3 4 void main(){ 5 Mat src=imread("E://1.jpg",0);//以灰度模式读入 6 Mat dst; 7 //threshold(src,dst,100,255,CV_THRESH_BINARY); 8 //adaptiveThreshold(src,dst,255,CV_ADAPT