1.利用滚动条TrackBar进行对比度与亮度调节
#include <iostream>
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;
Mat srcImg;
Mat dstImg;
int Contrast_value = 20;
int Bright_value = 20;
//滚动条回调事件
void onChange(int, void*)
{
for (int i = 0; i < srcImg.rows; i++)
{
for (int j = 0; j < srcImg.cols; j++)
{
//三个通道的对比度与亮度调节 以及 溢出保护
dstImg.at<Vec3b>(i, j)[0] = saturate_cast<uchar>((Contrast_value * 0.01 * srcImg.at<Vec3b>(i, j)[0])+ Bright_value);
dstImg.at<Vec3b>(i, j)[1] = saturate_cast<uchar>((Contrast_value * 0.01 * srcImg.at<Vec3b>(i, j)[1]) + Bright_value);
dstImg.at<Vec3b>(i, j)[2] = saturate_cast<uchar>((Contrast_value * 0.01 * srcImg.at<Vec3b>(i, j)[2]) + Bright_value);
}
}
imshow("输出窗口", dstImg);
}
int main()
{
srcImg = imread("ROI.bmp");
dstImg = Mat::zeros(srcImg.size(), srcImg.type());
namedWindow("输出窗口", WINDOW_NORMAL);
createTrackbar("对比度:", "输出窗口", &Contrast_value, 300, onChange, 0);
createTrackbar("亮度:", "输出窗口", &Bright_value, 200, onChange, 0);
//给滚动条回调函数赋初值
onChange(Contrast_value, 0);
onChange(Bright_value, 0);
imshow("original image", srcImg);
waitKey(0);
}
结果图示:
2.OpenCV拆分颜色通道
#include <iostream>
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;
Mat srcImg, dstImg;
Mat R, G, B;
vector<Mat> channels;
int main()
{
srcImg = imread("ROI.bmp");
namedWindow("output", WINDOW_NORMAL);
resizeWindow("output", 512, 512);
split(srcImg, channels);
B = channels[0];
G = channels[1];
R = channels[2];
imshow("output", srcImg);
imshow("B", B);
imshow("G", G);
imshow("R", R);
waitKey(0);
}
文章出处登录后可见!
已经登录?立即刷新