image - 图像中的亮度没有调整

标签 image opencv image-processing computer-vision

我正在努力达到这个结果

但是我正在尝试的是

Mat out = imread ("F:\\image.jpg");
Mat img2 = Mat(out.size(),out.type());
cv_Gamma(out,image ,0.7);
blending_overlay(image , out , image);

这给我以下结果

原始图像是

看起来我的图像中缺少亮度,但是当我增加亮度时仍然无法提供所需的结果

编辑
混合叠加
void blending_overlay(Mat& img1 , Mat& img2 , Mat& out)
{

Mat result(img1.size(), CV_32FC3);
for(int i = 0; i < img1.size().height; ++i){
    for(int j = 0; j < img1.size().width; ++j){

        for (int c=0 ; c<img1.channels();c++){
            float target = (float)img1.at<uchar>(i, 3*j+c)/255.0 ;
            float blend =  (float)img2.at<uchar>(i, 3*j+c)/255.0 ;
            if(target > 0.5){
                result.at<float>(i, 3*j+c) = ((1 - (1-2*(target-0.5)) * (1-blend)));

                }
            else{
                result.at<float>(i, 3*j+c) = ((2*target) * blend);
                }
        }
    }
}
result.convertTo(out,CV_8UC3,255);
}

实际上,我已经尝试了每种混合模式,对此我了解的是,我可以乘以从黄色到白色的线性渐变来进行乘积,但是如何使该渐变对我来说是无法理解的。关于这种情况的任何algorithm也将不胜感激。

最佳答案

似乎您需要 Gamma 校正。

在这里看看:

http://subokita.com/2013/06/18/simple-and-fast-gamma-correction-on-opencv/

以及以上链接的来源(带有来源/结果图片):

http://imagingsolution.net/program/opencv/gamma-correction/

关于image - 图像中的亮度没有调整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23526268/

相关文章:

c# - 在图像文件中定位点的最佳算法是什么?

css - 图库灯箱插件问题

JavaFX 图像错误

python - findContours返回具有重复点的轮廓

opencv - cv::MatExpr 的目的是什么?

c++ - 如何确定感兴趣区域,然后使用 OpenCV 裁剪图像

python - 使用 opencv python 识别图像中的文本数据以读取 mm/dd、描述和金额

jquery - 关于性能jQuery的问题

html - 将第一个文本对齐到图像右侧,然后将第二个文本对齐到图像下方

python - 在 3 channel 阵列上创建 numpy 掩码阵列永远行不通