【发布时间】:2020-09-26 18:01:49
【问题描述】:
我的意图是: - 从视频中提取所有帧 - 对每一帧应用背景去除 - 将所有帧合并为具有透明度的视频
问题: - 生成的视频在过去的背景中没有所需的透明度 我的合并部分代码
import cv2
import os
image_folder = r"C:\Users\youre\Documents\machine_learning\bg-rm\output"
video_name = r'C:\Users\youre\Documents\machine_learning\bg-rm\test.avi'
images = # list of all frames
frame = cv2.imread(os.path.join(image_folder, images[0]))
height, width, layers = frame.shape
video = cv2.VideoWriter(video_name, cv2.VideoWriter_fourcc(*"MJPG"), 30, (width, height))
for image in images:
video.write(cv2.imread(os.path.join(image_folder, image)))
cv2.destroyAllWindows()
video.release()
我的问题: - 我必须做什么才能使结果视频中的背景透明,因为我的代码只是给了我一个黑色背景。更具体:如何将 png 帧与 alpha 通道合并在一起?
【问题讨论】:
-
要在 opencv 中读取带有 alpha 通道的图像,您必须使用正确的 imread 标志。之后,您必须拆分 rgb 和 alpha 并使用您自己喜欢的任何混合技术,将两个图像与来自 alpha 通道的信息合并。