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
相关推荐
2401_857439692 小时前
SSM 架构下 Vue 电脑测评系统:为电脑性能评估赋能
开发语言·php
SoraLuna3 小时前
「Mac畅玩鸿蒙与硬件47」UI互动应用篇24 - 虚拟音乐控制台
开发语言·macos·ui·华为·harmonyos
xlsw_3 小时前
java全栈day20--Web后端实战(Mybatis基础2)
java·开发语言·mybatis
梧桐树04294 小时前
python常用内建模块:collections
python
Dream_Snowar4 小时前
速通Python 第三节
开发语言·python
高山我梦口香糖5 小时前
[react]searchParams转普通对象
开发语言·前端·javascript
信号处理学渣5 小时前
matlab画图,选择性显示legend标签
开发语言·matlab
红龙创客5 小时前
某狐畅游24校招-C++开发岗笔试(单选题)
开发语言·c++
蓝天星空5 小时前
Python调用open ai接口
人工智能·python
jasmine s5 小时前
Pandas
开发语言·python