OpenCVSharp 生成 HDR 图片

用 OpenCVSharp 4.5 跑一遍 OpenCV 官方教程。

原 OpenCV 官方教程链接: OpenCV: High Dynamic Range Imaging

测试图片可以从这里下载:github.com

using System;
using OpenCvSharp;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections.Generic;

namespace ConsoleApp1
{
    class tutorial59 : ITutorial
    {
        public void Run()
        {
            string[] imagesFiles = { "memorial0061.png", "memorial0062.png", "memorial0063.png", "memorial0064.png", "memorial0065.png", "memorial0066.png", "memorial0067.png", "memorial0068.png", "memorial0069.png", "memorial0070.png", "memorial0071.png", "memorial0072.png", "memorial0073.png", "memorial0074.png", "memorial0075.png", "memorial0076.png" };
            float[] exposures = { 0.03125f, 0.0625f, 0.125f, 0.25f, 0.5f, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024 };
            int num = imagesFiles.Length;

            //读入图片
            Mat[] images = new Mat[num];
            for (int i = 0; i < num; i++)
            {
                string file = @"I:\csharp\images\hdr\"+imagesFiles[i];
                images[i] = new Mat(file, ImreadModes.Color);
            }

            //估计相机响应
            Mat response = new Mat();
            CalibrateDebevec calibrate = CalibrateDebevec.Create();
            calibrate.Process(images, response, exposures);

            //生成HDR图片
            Mat hdr = new Mat();
            MergeDebevec merge_debevec = MergeDebevec.Create();
            merge_debevec.Process(images, hdr, exposures, response);

            //Tonemap
            Mat ldr = new Mat();
            Tonemap tonemap = Tonemap.Create(2.2f);
            tonemap.Process(hdr, ldr);

            Mat fusion = new Mat();
            MergeMertens merge_mertens = MergeMertens.Create();
            merge_mertens.Process(images, fusion);

            Cv2.ImWrite("fusion.png", fusion * 255);
            Cv2.ImWrite("ldr.png", ldr * 255);
            Cv2.ImWrite("hdr.hdr", hdr);
        }
    } 
}

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值