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
相关推荐
Evand J11 分钟前
【MATLAB例程,图像降噪滤波9】自适应维纳滑动窗口滤波(Wiener)图像降噪、方法对比,有中文注释
开发语言·图像处理·计算机视觉·matlab·滑动窗口·滤波·降噪
月光船幽幽29 分钟前
跨范式映射的稳定接口设计
人工智能·python·算法
杜大哥33 分钟前
python程序:如何查看电脑【电池电量的剩余百分比】 和 【是否插入连接着充电器】?
开发语言·python
wuyk55534 分钟前
Python网络爬虫入门到实战 第01章:爬虫到底是什么?原理、流程、合法性、风险全解析(零基础必看)
开发语言·爬虫·python
信誓旦旦的程序猿40 分钟前
【量化系统从零构建 #04】存储设计:选型·建库·交易日历
java·人工智能·python·股票数据api·股票数据·股票数据api接口·股票api数据接口
yurenpai(27届找实习中)41 分钟前
Java 10 的 var 为什么不能随便用?从订单汇总看懂类型推断与泛型陷阱
java·开发语言·java18
shmily麻瓜小菜鸡1 小时前
JS/TS 易踩坑知识点 — 模块化与工程化类
开发语言·javascript·ecmascript
geovindu1 小时前
CSharp: Observer Pattern
开发语言·后端·观察者模式·设计模式·c#·.netcore·行为模式
萧鼎1 小时前
Python 高性能Web框架神器 FastAPI:自动生成API文、基于Pydant、异步请求处理全搞定
前端·python·fastapi