c++ opencv 调整曝光度
时间: 2023-09-10 12:08:27 浏览: 111
要调整图像的曝光度,可以使用 OpenCV 库中的 `convertTo` 函数。
这个函数可以将一个图像从一个数据类型转换为另一个数据类型,并且可以对像素值进行缩放、平移等操作。
下面是一个简单的示例代码,演示如何使用 `convertTo` 函数来调整图像的曝光度:
```cpp
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat img = imread("test.jpg");
// 调整曝光度
Mat result;
img.convertTo(result, -1, 2.0, 0);
imshow("Original Image", img);
imshow("Adjusted Image", result);
waitKey(0);
return 0;
}
```
在代码中,我们首先读取一张图片 `test.jpg`,然后使用 `convertTo` 函数将其转换为另一个 `Mat` 对象 `result`。
`convertTo` 函数的第一个参数是输出图像的变量名,第二个参数是输出图像的数据类型,如果设置为 -1,则表示输出图像与原始图像使用相同的数据类型。
第三个参数是像素值的缩放因子,这里我们将其设置为 2.0,表示将像素值乘以 2.0。
第四个参数是像素值的平移量,这里我们将其设置为 0,表示不进行平移。
最后,我们将原始图像和调整后的图像分别显示出来,以便比较它们之间的差异。
相关问题
opencv-c++降低曝光度
以下是使用OpenCV C++降低曝光度的示例代码:
```cpp
#include <opencv2/opencv.hpp>
int main() {
cv::Mat img = cv::imread("input.jpg");
cv::Mat dst;
float gamma = 0.5; // 设置gamma值,范围为0到1
cv::Mat lookUpTable(1, 256, CV_8U);
uchar* p = lookUpTable.ptr();
for (int i = 0; i < 256; i++) {
p[i] = cv::saturate_cast<uchar>(pow(i / 255.0, gamma) * 255.0);
}
cv::LUT(img, lookUpTable, dst);
cv::imshow("Input", img);
cv::imshow("Output", dst);
cv::waitKey(0);
return 0;
}
```
这段代码首先读取输入图像,然后通过设置gamma值来创建一个查找表(look-up table),该查找表将输入图像的像素值映射到降低曝光度后的像素值。最后,使用`cv::LUT`函数将输入图像应用于查找表,得到降低曝光度后的输出图像。
请注意,这里的输入图像文件名为"input.jpg",你需要将其替换为你自己的图像文件名。
opencv 曝光度
在OpenCV中,可以使用曝光度参数来调整图像的曝光程度。曝光度参数控制图像的亮度和对比度,可以使图像更亮或更暗。
以下是一个使用OpenCV调整图像曝光度的示例代码:
```python
import cv2
# 读取图像
image = cv2.imread('image.jpg')
# 调整曝光度
exposure = 1.5 # 曝光度参数,大于1增加曝光,小于1减少曝光
adjusted_image = cv2.convertScaleAbs(image, alpha=exposure, beta=0)
# 显示原始图像和调整后的图像
cv2.imshow('Original Image', image)
cv2.imshow('Adjusted Image', adjusted_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上述代码中,我们首先使用`cv2.imread()`函数读取图像。然后,通过调整`exposure`参数来改变图像的曝光度。`alpha`参数控制亮度的缩放比例,`beta`参数控制亮度的偏移量。最后,使用`cv2.imshow()`函数显示原始图像和调整后的图像。
请注意,上述代码中的`image.jpg`是示例图像的文件名,你需要将其替换为你自己的图像文件名。