您的位置:首页 > 运维架构

OpenCV 图像对比度和亮度调节

2016-08-28 09:46 246 查看

一. 实验描述

用OpenCV的滑动条和像素操作对图像的对比度和亮度进行调节。

二. 实验代码

#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

using namespace std;
using namespace cv;

const string WINDOW_NAME = "对比度&亮度";
Mat src_img;
Mat dst_img;
int contrast_value;
int bright_value;

void on_change(int, void *) {
for (int i = 0; i < src_img.rows; ++i) {
for (int j = 0; j < src_img.cols; ++j) {
for (int c = 0; c < 3; ++c) {
dst_img.at<Vec3b>(i, j)[c] = saturate_cast<uchar>((contrast_value * 0.01) * src_img.at<Vec3b>(i, j)[c] + bright_value);
}
}
}

cout << contrast_value << ' ' << bright_value << endl;

imshow(WINDOW_NAME, dst_img);
}

int main() {
src_img = imread("img/1.jpg");

if (!src_img.data) {
cerr << "图片读取错误!" << endl;
}

dst_img = Mat::zeros(src_img.size(), src_img.type());

contrast_value = 80;
bright_value = 80;

namedWindow(WINDOW_NAME);

createTrackbar("对比度: ", WINDOW_NAME, &contrast_value, 300, on_change);
createTrackbar("亮  度: ", WINDOW_NAME, &bright_value, 200, on_change);

on_change(contrast_value, 0);
on_change(bright_value, 0);

waitKey(0);
return 0;
}


三. 实验结果



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: