#include#include 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 (i, j)[0] = saturate_cast ((Contrast_value * 0.01 * srcImg.at (i, j)[0])+ Bright_value); dstImg.at (i, j)[1] = saturate_cast ((Contrast_value * 0.01 * srcImg.at (i, j)[1]) + Bright_value); dstImg.at (i, j)[2] = saturate_cast ((Contrast_value * 0.01 * srcImg.at (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#include using namespace std; using namespace cv; Mat srcImg, dstImg; Mat R, G, B; vector 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); }


![opencv [c++] 利用滚动条进行对比度与亮度调节以及拆分颜色通道 opencv [c++] 利用滚动条进行对比度与亮度调节以及拆分颜色通道](http://www.mshxw.com/aiimages/31/920401.png)
