python实现将RGB图和深度图融合为四通道RGBD图(批量)

通常情况下,RGB图和深度图分开存储,有的时候想放到一张图片里保存所有信息,可以把深度信息放到RGBA的第四个通道(透明度通道),这篇文章介绍实现方法。
注意:本文记录的是一个文件夹下文件的批量处理,如果只想处理一对文件只需使用sum_RGBD()即可

RGB+深度合成四通道RGBD

javascript 复制代码
from PIL import Image
import os
import numpy as np
import cv2

# function:将RGB图像文件和深度图像文件合并为RGBD文件
def sum_RGBD(rgb_image_path, depth_image_path, dir_path):
    # 读取RGB图像和深度图像
    rgb_image = Image.open(rgb_image_path)  # 更换为你RGB图像的路径
    depth_image = Image.open(depth_image_path)  # 更换为你深度图像的路径

    # 确保深度图像是单通道,如果不是,转换为灰度图像
    if depth_image.mode != 'L':
        depth_image = depth_image.convert('L')

    # 检查两张图像的尺寸是否匹配
    if rgb_image.size != depth_image.size:
        raise ValueError("The size of the two images does not match.")

    # 合并图像
    rgbd_image = Image.merge("RGBA", (
    rgb_image.getchannel('R'), rgb_image.getchannel('G'), rgb_image.getchannel('B'), depth_image))

    # 保存结果
    save_path = 设置保存路径
    rgbd_image.save(save_path)  # 更换为你想保存的路径

批量处理

javascript 复制代码
# function:从文件夹中获取文件名列表
def get_filename_list(image_folder_path, depth_folder_path):
    image_file_names = os.listdir(image_folder_path)
    depth_file_names = os.listdir(depth_folder_path)
    return image_file_names, depth_file_names
    
if __name__ == '__main__':
	# 改成自己的路径!!!
    image_file_names, depth_file_names = get_filename_list(image_folder_path, depth_folder_path)
    for i in range(len(image_file_names)):
        rgb_image_path = image_folder_path + image_file_names[i]
        depth_image_path = depth_folder_path + depth_file_names[i]
        dir_path = 设置保存路径
        sum_RGBD(rgb_image_path, depth_image_path, dir_path)

验证是否为四通道

javascript 复制代码
def is_rgbd_image(image):
    return len(image.getbands()) > 3
相关推荐
apocelipes10 小时前
常用编程语言和库的正则表达式性能对比
c语言·c++·python·性能优化·golang·开发工具和环境
用户83562907805112 小时前
使用 Python 在 PDF 中创建与管理书签
后端·python
MeixianAgent16 小时前
Python 回测数据入口怎么验?历史 K 线入库前先做 5 个检查
后端·python
咕白m62520 小时前
用 Python 实现一键批量查找与替换 Excel 数据
后端·python
SelectDB2 天前
Apache Doris Python UDF:让 SQL 直接调用 Python 生态,支撑 Agent 时代复杂业务逻辑
大数据·数据库·python
荣码2 天前
GraphRAG:普通RAG只能回答"点"的问题,我踩了4个坑才搞懂
java·python
金銀銅鐵2 天前
[Python] 基于欧几里得算法,实现分数约分计算器
python·数学
Lyn_Li2 天前
Kaggle Top 5 | 198只股票、200条数据的金融预测——BattleFin高分方案从零复现
python·kaggle·比赛复盘·金融预测
小九九的爸爸3 天前
前端想要入门Agent开发,要具备哪些Python基础?
python·agent·ai编程
阿耶同学3 天前
手把手教你用 LangGraph 搭建三层嵌套 Agent 架构
python·程序员