我的意图是:-从视频中提取所有帧-对每帧应用背景去除-将所有帧合并为具有透明度的视频
问题:-所产生的视频在以前的背景下没有所需的透明度我的合并部分代码
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\nigga2.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通道合并在一起?
MJPG
视频格式不支持Alpha通道。这只是JPEG
图像的序列,JPEG
格式不支持透明度。您应该选择支持它的编解码器。但是我不确定可以通过OpenCV获得它,这取决于您的平台。相反,您可以将每个图像另存为PNG(带有Alpha通道),然后将它们与FFMPEG等第三方工具合并。HAP是我知道的唯一支持Alpha通道的唯一免费和开放源视频格式,但我并不全部了解。