You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何实现两张灰度图像叠加:单张转绿色后与另一张融合

实现方案

基于你已经导入的OpenCV库即可实现需求,核心逻辑是先把单张灰度图映射为指定颜色的彩色图,再对两张3通道图做加权融合,完整实现代码如下:

import cv2
import numpy as np

# (可选优化)读入时直接指定灰度模式,避免默认读为3通道灰度图的冗余问题,替换你原有读入代码即可
# img_avg = cv2.imread(directory + "/xzIMatrixaveraged/1.png", cv2.IMREAD_GRAYSCALE)
# img_dyn = cv2.imread(directory + "/xzIMatrixdynamic/1.png", cv2.IMREAD_GRAYSCALE)

# 统一转单通道灰度图,兼容你原有读入逻辑
gray_avg = cv2.cvtColor(img_avg, cv2.COLOR_BGR2GRAY) if len(img_avg.shape) == 3 else img_avg
gray_dyn = cv2.cvtColor(img_dyn, cv2.COLOR_BGR2GRAY) if len(img_dyn.shape) == 3 else img_dyn

# 生成绿色色阶图:OpenCV默认BGR通道顺序,索引0为蓝、1为绿、2为红
green_dyn = np.zeros((gray_dyn.shape[0], gray_dyn.shape[1], 3), dtype=np.uint8)
green_dyn[..., 1] = gray_dyn # 仅绿色通道赋值灰度值,蓝、红通道置0

# 把另一张灰度图转成3通道格式,满足融合的维度要求
bgr_avg = cv2.cvtColor(gray_avg, cv2.COLOR_GRAY2BGR)

# 加权融合:alpha是avg图权重,1-alpha是绿色图权重,最后一位为亮度偏移量默认设0
alpha = 0.5 # 可自行调整数值修改融合比例,数值越大avg图占比越高
merged_img = cv2.addWeighted(bgr_avg, alpha, green_dyn, 1 - alpha, 0)

# 可选操作:展示/保存结果
cv2.imshow("融合结果", merged_img)
cv2.waitKey(0)
cv2.imwrite("merged_result.png", merged_img)
  • 如需更换其他色调,修改green_dyn的通道赋值即可:要红色就赋值给索引2的通道,要蓝色就赋值给索引0的通道,同时给两个通道赋值可实现黄色、紫色等其他色调。
  • 调整alpha参数即可修改两张图的透明度占比,适配你需要的最终效果。

内容的提问来源于stack exchange,提问作者A. Radek Martinez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 09:12:01