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
相关推荐
小白学大数据2 分钟前
长周期爬虫的数据一致性:断点续爬 + 事务回滚保障采集质量
开发语言·爬虫·测试工具
leisoo809726 分钟前
财报数据怎么排雷本地化Python构建财务异常预警系统
人工智能·python·算法
zlinear数据采集卡38 分钟前
D223上位机C#开发实战:从帧解析到波形显示的完整实现
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#
小柯南敲键盘1 小时前
跨马翻译:跨境电商批量图片翻译与视频字幕一站式工具
人工智能·python·音视频
Poo_Chai1 小时前
QT emit信号后完整处理流程,包括槽函数响应流程
java·开发语言·数据库
瑞码空间1 小时前
Java 图形界面(GUI)完整知识点手册
java·开发语言·图形界面·swing
卷无止境1 小时前
FastAPI Guard 全解析,从概念到工程落地的实战指南
后端·python
卷无止境1 小时前
FastAPI Users 全面解析:概念、原理与工程实战
后端·python
小努蛋2 小时前
linux编译openresty异常问题,lua_cjson.c:706:5: 错误: ‘for‘ 循环初始化声明只在 C99 或 C++ 模式下允许
开发语言·lua·openresty
qz_Serene2 小时前
C++:类和对象(上)
开发语言·c++