以下是一个简单的LDR转HDR的C++程序,使用OpenCV库:

#include <opencv2/opencv.hpp>

using namespace cv;

void ldr2hdr(Mat& img, float gamma, float exposure)
{
    Mat ldr_img = img.clone();

    // gamma校正
    Mat gamma_img;
    pow(ldr_img / 255.f, gamma, gamma_img);
    gamma_img.convertTo(gamma_img, CV_32F);

    // 曝光调整
    Mat hdr_img;
    hdr_img = exposure * gamma_img;

    // 显示结果
    imshow("LDR Image", ldr_img);
    imshow("HDR Image", hdr_img);
}

int main()
{
    // 读取LDR图像
    Mat ldr_img = imread("input.jpg", IMREAD_GRAYSCALE);

    // 转换成浮点型
    ldr_img.convertTo(ldr_img, CV_32F);

    // 调用函数
    ldr2hdr(ldr_img, 2.2, 1.f);

    waitKey(0);

    return 0;
}

这个程序将读取名为“input.jpg”的LDR图像,并将其转换为浮点型。然后,它将应用gamma校正和曝光调整,生成HDR图像,并在窗口中显示结果。您可以根据需要调整gamma值和曝光值


原文地址: https://www.cveoy.top/t/topic/ckS7 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录