【问题标题】:Combine png-images to video with alpha channel in python在python中将png图像与带有alpha通道的视频结合起来
【发布时间】: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 通道的信息合并。

标签: python opencv video cv2


【解决方案1】:

MJPG 视频格式不支持 Alpha 通道。 这只是JPEG 图像的序列,JPEG 格式不支持透明度。 您应该选择支持它的编解码器。但我不确定是否可以通过 OpenCV 使用,这取决于您的平台。

相反,您可以将每个图像保存为 PNG(带有 alpha 通道),然后使用 FFMPEG 等第三方工具将它们合并。 HAP 是我所知道的唯一支持 alpha 通道的免费和开源视频格式,但我并不了解它们。

【讨论】:

    猜你喜欢
    • 2018-04-25
    • 2016-07-26
    • 1970-01-01
    • 2015-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    相关资源
    最近更新 更多