基于Python实现的HDR图像处理算法

news2024/11/19 8:26:33

此代码会读取两张图片,一张用于保留高光细节,另一张用于保留暗部细节。两张图片按指定比例进行像素融合,最终生成一张合成的HDR图片。

import cv2
import numpy as np

def hdr_fusion(highlight_img_path, shadow_img_path, output_path, alpha=0.5):
    """
    HDR融合算法,读取两张图片并根据比例进行像素融合。
    
    :param highlight_img_path: 高光细节图片路径
    :param shadow_img_path: 暗部细节图片路径
    :param output_path: 合成图片的输出路径
    :param alpha: 高光图片的权重,范围为0到1
    """
    # 读取两张图片
    highlight_img = cv2.imread(highlight_img_path)
    shadow_img = cv2.imread(shadow_img_path)

    if highlight_img is None or shadow_img is None:
        print("无法读取图片,请检查文件路径。")
        return
    
    # 确保两张图片大小一致
    if highlight_img.shape != shadow_img.shape:
        print("两张图片大小不一致,调整大小...")
        shadow_img = cv2.resize(shadow_img, (highlight_img.shape[1], highlight_img.shape[0]))

    # 像素融合公式: result = alpha * highlight_img + (1 - alpha) * shadow_img
    fused_img = cv2.addWeighted(highlight_img, alpha, shadow_img, 1 - alpha, 0)

    # 保存结果图片
    cv2.imwrite(output_path, fused_img)
    print(f"融合完成,结果已保存至:{output_path}")

if __name__ == "__main__":
    # 输入图片路径
    highlight_img_path = "./highlight.jpg"  # 高光细节图片路径
    shadow_img_path = "./shadow.jpg"       # 暗部细节图片路径
    output_path = "./hdr_result.jpg"       # 合成图片保存路径

    # 设置高光图片的权重 (0到1之间)
    alpha = 0.5

    # 调用HDR融合函数
    hdr_fusion(highlight_img_path, shadow_img_path, output_path, alpha)

效果测试(网图,学习使用,侵权删)

暗部细节:

亮部细节

融合效果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2243276.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络协议(4)拥塞控制

之前已经说过了tcp也是会考虑网络的情况的,也就是当网络出现问题的时候tcp不会再对报文进行重传。当所有的用户在网络不好的时候都不会对丢失的报文进行重传。这样就会防止网络瘫痪。 这样的机制也就是tcp会进行拥塞控制。 拥塞控制 所谓的慢启动看下面这张图就能…

解决 IDEA 修改代码重启不生效的问题

前言 在使用 IntelliJ IDEA 进行 Java 项目开发时,有时会遇到一个令人头疼的问题:修改了代码后,重启服务却发现更改没有生效。通常情况下,解决这个问题需要通过 Maven 的 clean 和 compile 命令来强制重新编译,但这显…

git使用及上线流程(仅为我工作中常用)

推荐软件或者直接终端 ⚠️注意:在确保远程和本地分支都可使用的情况下 git常见使用命令 ls---查看所有目录 pwd---本机密码 cd 目录名---进入目录 Touch ---创建文本文件 git status---查看状态 git branch---查看分支 git pull---拉取远程最新代码 git checkou…

12.C++内存管理1(C/C++内存分布,C语言动态内存管理)

⭐本篇重点:C/C内存分布,C语言动态内存管理 ⭐本篇代码:c学习/04.c-动态内存管理 橘子真甜/c-learning-of-yzc - 码云 - 开源中国 (gitee.com) 目录 一. C/C内存分布(C/C内存地址空间) 二. C语言动态内存管理 2.1 …

游戏引擎学习第15天

视频参考:https://www.bilibili.com/video/BV1mbUBY7E24 关于游戏中文件输入输出(IO)操作的讨论。主要分为两类: 只读资产的加载 这部分主要涉及游戏中用于展示和运行的只读资源,例如音乐、音效、美术资源(如 3D 模型和…

JavaWeb——JS、Vue

目录 1.JavaScript a.概述 b.引入方式 c.JS的基础语法 d.JS函数 e.JS对象 f.JS事件监听 2.Vue a.概述 b.Vue常用指令 d.生命周期 1.JavaScript a.概述 JavaScript是一门跨平台、面向对象的脚本语言。是用来控制网页行为的,它能使网页可交互。JavaScript和…

HarmonyOs鸿蒙开发实战(16)=>沉浸式效果第一种方案一窗口全屏布局方案

1.沉浸式效果的目的 开发应用沉浸式效果主要指通过调整状态栏、应用界面和导航条的显示效果来减少状态栏导航条等系统界面的突兀感,从而使用户获得最佳的UI体验。 2.窗口全屏布局方案介绍 调整布局系统为全屏布局,界面元素延伸到状态栏和导航条区域实现沉…

spi 回环

///tx 极性0 (sclk信号线空闲时为低电平) /// 相位0 (在sclk信号线第一个跳变沿进行采样) timescale 1ns / 1ps//两个从机 8d01 8d02 module top(input clk ,input rst_n,input [7:0] addr ,input …

CF862B Mahmoud and Ehab and the bipartiteness(二分图的性质)

思路:一个二分图是由两个集合组成的,同一个集合中的节点间不能连边,所以一个二分图最多有cnt[1]*cnt[2]条边,题目给出一个树的n-1条边,要我们添加最多的边数使他成为二分图,添加的边数就是cnt[1]*cnt[2]-n1…

docker:基于Dockerfile镜像制作完整案例

目录 摘要目录结构介绍起始目录package目录target目录sh目录init.sh脚本start.sh脚本stop.sh脚本restart.sh脚本 config目录 步骤1、编写dockerfilescript.sh脚本 2、构件镜像查看镜像 3、保存镜像到本地服务器4、复制镜像文件到指定目录,并执行init.sh脚本5、查看挂…

Redis自学之路—基础数据结构具体方法解析(五)

目录 简介 数据结果具体方法解析 字符串(String) 操作命令 set设置值 setex setnx get获取值 del删除key mset批量设置值 incr数字运算 append追加指令 strlen字符串长度 getset设置并返回原值 setrange设置指定位置的字符 getrange截取字符串 命令的时间复杂…

通过华为鲲鹏认证发行上市的集成平台产品推荐

华为鲲鹏认证是技术实力与品质的权威象征,代表着产品达到了高标准的要求。从技术层面看,认证确保产品与华为鲲鹏架构深度融合,能充分释放鲲鹏芯片的高性能、低功耗优势,为集成平台的高效运行提供强大动力。在安全方面,…

使用 AMD GPU 实现 Segment Anything

Segment Anything with AMD GPUs — ROCm Blogs 作者: Sean Song 发布日期:2024年6月4日 介绍 分割任务——识别图像中哪些像素属于某对象——是计算机视觉中的一个基础任务,应用广泛,从科学图像分析到照片编辑。Segment Anyth…

Spring Cloud Stream实现数据流处理

1.什么是Spring Cloud Stream? 我看很多回答都是“为了屏蔽消息队列的差异,使我们在使用消息队列的时候能够用统一的一套API,无需关心具体的消息队列实现”。 这样理解是有些不全面的,Spring Cloud Stream的核心是Stream&#xf…

无人机飞手入门指南

无人机飞手入门指南旨在为初学者提供一份全面的学习路径和实践建议,帮助新手快速掌握无人机飞行技能并了解相关法规知识。以下是一份详细的入门指南: 一、了解无人机基础知识 1. 无人机构造:了解无人机的组成部分,如机身、螺旋桨…

使用Mac下载MySQL修改密码

Mac下载MySQL MySQL官网链接MySQL​​​​​​ 当进入到官网后下滑到community社区,进行下载 然后选择community sever下载 这里就是要下载的界面,如果需要下载之前版本的话可以点击archives, 可能会因为这是外网原因,有时候下…

两大新兴开发语言大比拼:Move PK Rust

了解 Move 和 Rust 的差异有助于开发者根据项目的具体需求选择最合适的语言。选择不恰当的语言可能会导致项目后期出现技术债务。不同语言有其独特的优势。了解 Move 和 Rust 的差异可以帮助开发者拓展技术视野,发现不同语言在不同领域的应用潜力。 咱们直奔主题&a…

three.js 对 模型使用 视频进行贴图修改材质

three.js 对 模型使用 视频进行贴图修改材质 https://threehub.cn/#/codeMirror?navigationThreeJS&classifyapplication&idvideoModel import * as THREE from three import { OrbitControls } from three/examples/jsm/controls/OrbitControls.js import { GLTFLoad…

【论文分享】利用多源大数据衡量街道步行环境的老年友好性:以中国上海为例

本次给大家带来一篇SCI论文的全文翻译!该论文考虑了绿化程度、可步行性、安全性、形象性、封闭性和复杂性这六个指标,提出了一种基于多源地理空间大数据的新型定量评价模型,用于从老年人和专家的角度评估街道步行环境的老年友好程度&#xff…

计算机网络安全 —— 对称加密算法 DES (一)

一、对称加密算法概念# ​ 我们通过计算机网络传输数据时,如果无法防止他人窃听, 可以利用密码学技术将发送的数据变换成对任何不知道如何做逆变换的人都不可理解的形式, 从而保证了数据的机密性。这种变换被称为加密( encryptio…