设置opencv对比度的函数
时间: 2023-05-11 08:04:59 浏览: 84
可以使用cv::Mat::convertTo函数来设置opencv图像的对比度。该函数的原型如下:
void cv::Mat::convertTo(OutputArray dst, int rtype, double alpha=1, double beta=0) const;
其中,dst是输出的目标图像,rtype是输出图像的数据类型,alpha是对比度的缩放因子,beta是亮度的调整值。例如,以下代码将图像的对比度增加50%:
cv::Mat img = cv::imread("image.jpg");
cv::Mat dst;
img.convertTo(dst, -1, 1.5, 0);
注意,如果rtype参数为负数,则输出图像的数据类型与输入图像相同。
相关问题
opencv对比度函数
OpenCV中可以使用convertTo函数来改变图像的对比度,其函数原型如下:
```c++
void cv::Mat::convertTo(
OutputArray dst, // 输出图像
int rtype, // 输出图像的数据类型,一般与原始图像相同
double alpha = 1, // 线性变换的乘数
double beta = 0 // 线性变换的偏移量
) const;
```
其中,alpha表示线性变换的乘数(默认为1),beta表示线性变换的偏移量(默认为0)。可以通过调整alpha和beta来改变图像的对比度。当alpha大于1时,图像的对比度增强;当alpha小于1时,图像的对比度减弱。
示例代码:
```c++
cv::Mat src = cv::imread("test.jpg");
cv::Mat dst;
src.convertTo(dst, -1, 1.5, 0); // 增强对比度
cv::imshow("src", src);
cv::imshow("dst", dst);
cv::waitKey();
```
注意:convertTo函数只是对图像进行线性变换,因此如果图像的像素值已经达到了最大值或最小值,再进行线性变换也无法改变其对比度。
opencv对比度调节滑条回调函数
在使用OpenCV进行图像处理时,我们经常需要调整图像的对比度。可以使用cv::Mat的convertTo()函数来实现对比度调节,但是如果需要实时调节对比度,可以使用滑条回调函数来实现。
下面是一个简单的示例代码,演示了如何使用滑条回调函数来实现对比度调节:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int g_contrast_value = 50; // 对比度初始值
int g_brightness_value = 50; // 亮度初始值
Mat g_srcImage, g_dstImage;
// 对比度和亮度调节函数
void onContrastAndBright(int, void*)
{
// 计算对比度和亮度值
int contrast_value = g_contrast_value - 50;
double brightness_value = g_brightness_value - 50;
// 计算缩放比例
double scale = pow(2, contrast_value / 50.0);
// 计算像素值偏移量
double delta = brightness_value * 255 / 100.0;
// 对图像进行对比度和亮度调节
g_srcImage.convertTo(g_dstImage, -1, scale, delta);
// 显示调整后的图像
imshow("dstImage", g_dstImage);
}
int main()
{
// 读取图像
g_srcImage = imread("test.jpg");
// 创建窗口
namedWindow("srcImage", WINDOW_NORMAL);
namedWindow("dstImage", WINDOW_NORMAL);
// 创建滑条
createTrackbar("Contrast", "dstImage", &g_contrast_value, 100, onContrastAndBright);
createTrackbar("Brightness", "dstImage", &g_brightness_value, 100, onContrastAndBright);
// 初始化图像
onContrastAndBright(g_contrast_value, 0);
// 显示原始图像
imshow("srcImage", g_srcImage);
// 等待按键
waitKey();
return 0;
}
```
在这个示例代码中,我们首先读取了一张图像,然后创建了两个窗口,一个用于显示原始图像,一个用于显示调整后的图像。接着,我们创建了两个滑条,一个用于调节对比度,一个用于调节亮度。每当滑条的值发生变化时,就会调用onContrastAndBright()函数进行对比度和亮度调节。最后,我们显示了原始图像,并等待按键。
阅读全文