ldr转hdr c++程序
以下是一个简单的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 著作权归作者所有。请勿转载和采集!