改变对比度
改变图像的对比度也是常用操作。在此操作中,图像中每个像素的值应乘以不等于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”替换为计算机中图像的有效位置。然后你应该看到一组像下面这样的图像。
增加对比度
减少对比度