c++ - 如何使用 opencv c++ 增加图像的对比度?

标签 c++ opencv image-processing

我想用opencv c++增加下面图片的对比度

enter image description here

我使用直方图处理技术,例如直方图均衡化 (HE)、直方图规范等。但我没有达到很好的效果结果如下图:

enter image description here

对于如何解决这个任务,您有什么建议?或者我可以在 internet 上的哪些资源上找到帮助?

最佳答案

我在 OpenCV 上找到了一个关于改变图像对比度的有用主题:

#include <cv.h>
#include <highgui.h>
#include <iostream>

using namespace cv;

double alpha; /**< Simple contrast control */
int beta;  /**< Simple brightness control */

int main( int argc, char** argv )
{
 /// Read image given by user
 Mat image = imread( argv[1] );
 Mat new_image = Mat::zeros( image.size(), image.type() );

 /// Initialize values
 std::cout<<" Basic Linear Transforms "<<std::endl;
 std::cout<<"-------------------------"<<std::endl;
 std::cout<<"* Enter the alpha value [1.0-3.0]: ";std::cin>>alpha;
 std::cout<<"* Enter the beta value [0-100]: "; std::cin>>beta;

 /// Do the operation new_image(i,j) = alpha*image(i,j) + beta
 for( int y = 0; y < image.rows; y++ )
    { for( int x = 0; x < image.cols; x++ )
         { for( int c = 0; c < 3; c++ )
              {
      new_image.at<Vec3b>(y,x)[c] =
         saturate_cast<uchar>( alpha*( image.at<Vec3b>(y,x)[c] ) + beta );
             }
    }
    }

 /// Create Windows
 namedWindow("Original Image", 1);
 namedWindow("New Image", 1);

 /// Show stuff
 imshow("Original Image", image);
 imshow("New Image", new_image);

 /// Wait until user press some key
 waitKey();
 return 0;
}

参见:Changing the contrast and brightness of an image!

关于c++ - 如何使用 opencv c++ 增加图像的对比度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37650564/

相关文章:

c++ - 在 C++ 中读取/写入设备

python - 霍夫过滤后没有结果

algorithm - 如何自动调整颜色和对比度

python - 为什么提取出来的水印和嵌入的水印不一样?

c++ - OpenCV 2.x 中像素访问的错误

python - 使用 Keras 随机增强图像

c++ - std::tuple,自动构造顺序

c++ - 编译 VNC 服务器二进制文件(适用于 Android)

c++ - 下面粗体的句子,在 Nicolai Josuttis 的书 "The Standard Library"中,我不清楚

python - 使用Python中的OpenCV中的Hu矩进行形状识别