使用C++版opencv,如何给图像设置亮度和对比度
时间: 2023-12-26 21:06:23 浏览: 121
OpenCV实现图像对比度、亮度值调整(C++实现).zip
要给图像设置亮度和对比度,可以使用以下代码:
```c++
cv::Mat image = cv::imread("image.jpg");
double alpha = 1.5; // 对比度增益
int beta = 50; // 亮度增益
cv::Mat new_image = cv::Mat::zeros(image.size(), image.type());
// 应用亮度和对比度调整
for (int y = 0; y < image.rows; ++y) {
for (int x = 0; x < image.cols; ++x) {
for (int c = 0; c < image.channels(); ++c) {
new_image.at<cv::Vec3b>(y, x)[c] = cv::saturate_cast<uchar>(alpha * image.at<cv::Vec3b>(y, x)[c] + beta);
}
}
}
```
在上面的代码中,我们首先读取了一张图像,然后设置了对比度增益和亮度增益。接着我们创建了一个新的图像 `new_image`,并且使用 `saturate_cast` 函数将像素值转换为 8 位无符号整数。最后,我们将亮度和对比度的调整应用到每个像素上。
注意,上述代码只适用于彩色图像,如果要处理灰度图像,需要将代码中的 `cv::Vec3b` 换成 `uchar`。
阅读全文