首页 > 代码库 > opencv学习之路(9)、对比度亮度调整与通道分离
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=http://www.mamicode.com/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=http://www.mamicode.com/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 }
opencv学习之路(9)、对比度亮度调整与通道分离
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。