記事の転載は可能ですが、出典の明記は必須です!
以前、Intel Realsense D435 深度カメラを使用して RGB カラー イメージと 16 ビット深度イメージをキャプチャする方法を学びました。
デプスマップとRGBカラーマップを画像フレームとして使用し、ビデオの表示、記録、保存を実現します。
実際のニーズに基づいて、ビデオを連続した画像フレームに分解する必要があります。その手順は次のとおりです。
まず、通常のビデオは RGB ビデオからフレームを抽出し、ビデオを連続画像フレームに分解します。
import cv2 #引入图像处理与系统操作的库
import os
def process_rgb_video(i_video, o_video): # 定义抽帧函数
cap = cv2.VideoCapture(i_video) # 获取视频
expand_name = '_rgb.png' # 分解后图片名称后缀
if not cap.isOpened(): # 视频路径检测
print("Please check the path.")
cnt = 0
count = 0
num = 1
while 1:
ret, frame = cap.read() # 获取图像帧
cnt += 1 # 保存每一帧,修改参数连续5帧后抽取一帧并保存该帧图片,具体由使用者设置
if cnt % num == 0:
count += 1
cv2.imwrite(os.path.join(o_video, str(count) + expand_name), frame)
if not ret:
cap.close() # 遍历完视频帧后退出
break
if __name__ == '__main__':
# 读取视频路径,需要根据本地情况进行修改
input_rgb = r'D:\Pycharm\code\realsensecamera\targetvideo_rgb.mp4'
# 输出图像帧路径,可根据需求进行修改
output_rgb = r'D:\Pycharm\code\realsensecamera\rgb'
# 创建输出路径文件夹
if os.path.exists(output_rgb):
print('rgb文件夹存在')
else:
print('rgb文件夹缺失,自动创建 ')
os.mkdir(output_rgb)
# 调用图像抽帧函数,分解RGB视频
process_rgb_video(input_rgb, output_rgb)
フォローアップは、16 ビット深度マップ ビデオの分解です。ここでは、h5py が呼び出され、16 ビット深度マップ ビデオを読み取って分解します。
import os
import h5py # 用于16位深度图视频的读取与分解
import cv2
import numpy as np
def h52img(input_depth, output_depth):
# input_depth : h5文件路径
# output_depth: 图片文件路径
h5 = h5py.File(input_depth, 'r') # 读取深度图视频
os.path.join(output_depth)
cnt = 0
for key in h5.keys():
cnt = cnt + 1 # 每一帧都进行深度图保存
img = cv2.imdecode(np.array(h5[key]), -1) # 16位深度图解码
img_name = str(cnt) + '_depth'+'.png' # 自定义的深度图文件名称
cv2.imwrite(os.path.join(output_depth, img_name), img) # 以png格式保存深度图
h5.close()
if __name__ == '__main__':
# 目标深度图视频读取路径,需要根据本地情况进行修改
input_depth = r'D:\Pycharm\code\DepthCamera\targetvideo_depth.h5'
# 深度图图像帧保存路径
output_depth = r'D:\Pycharm\code\DepthCamera\depth'
# 创建保存路径对应的文件夹
if os.path.exists(output_depth):
print('depth文件夹存在')
else:
print('depth文件夹缺失,自动创建 ')
os.mkdir(output_depth)
# 调用视频分解函数,将目标视频分解为图像帧
h52img(input_depth, output_depth)
上記は、取得した RGB および深度マップビデオを連続画像フレームに分解できるビデオ分解のコード全体です。
その後、対応する RGB および深度マップ画像フレームに基づいて点群処理が実行されます。