改变对比度
改变图像的对比度也是常用操作。在此操作中,图像中每个像素的值应乘以不等于1的正常数。要更改视频的对比度,应对视频中的每个帧执行相同的操作。为了增加图像的对比度,图像中的每个像素应该乘以大于1的正常数。
new_image (i, j) = image(i, j) * c c > 1
为了降低图像的对比度,图像中的每个像素应乘以小于1的正常数。
new_image (i, j) = image(i, j) * c 0 < c < 1
有更多先进的方法来增强图像的对比度,例如直方图均衡。它增强了图像的对比度,使得强度分布在可用空间中均衡地平衡。我们将在下一课中讨论直方图均衡。
使用OpenCV更改图像的对比度
现在,我将向您展示如何使用OpenCV C++示例增加和减少图像的对比度。 建议首先浏览“载入并显示图像”,以便更好地理解以下示例。#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
//读取图像
Mat image = imread("Christmas.jpg");
//检测失败
if (image.empty())
{
cout << "Could not open or find the image" << endl;
cin.get(); //等待键盘
return -1;
}
Mat imageContrastHigh2;
image.convertTo(imageContrastHigh2, -1, 2, 0); //对比度2
Mat imageContrastHigh4;
image.convertTo(imageContrastHigh4, -1, 4, 0); //对比度4
Mat imageContrastLow0_5;
image.convertTo(imageContrastLow0_5, -1, 0.5, 0); //对比度0.5
Mat imageContrastLow0_25;
image.convertTo(imageContrastLow0_25, -1, 0.25, 0); //对比度0.25
//创建窗口
namedWindow("Original", WINDOW_NORMAL);
namedWindow("Contrast2", WINDOW_NORMAL);
namedWindow("Contrast4", WINDOW_NORMAL);
namedWindow("Contrast0.5", WINDOW_NORMAL);
namedWindow("Contrast0.25", WINDOW_NORMAL);
//显示图像
imshow("Original", image);
imshow("Contrast2", imageContrastHigh2);
imshow("Contrast4", imageContrastHigh4);
imshow("Contrast0.5", imageContrastLow0_5);
imshow("Contrast0.25", imageContrastLow0_25);
waitKey(0); //等待键盘
destroyAllWindows(); //毁灭窗口 们
return 0;
}
将上面的代码段复制并粘贴到IDE中并运行它。请注意必须将代码中的“Christmas.jpg”替换为计算机中图像的有效位置。然后你应该看到一组像下面这样的图像。
增加对比度
减少对比度