python - 在python中将png图像与带有alpha通道的视频结合起来
问题描述
我的意图是: - 从视频中提取所有帧 - 对每个帧应用背景去除 - 将所有帧合并为具有透明度的视频
问题: - 生成的视频没有所需的透明度,其中背景曾经是我的合并部分代码
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 通道合并在一起?
解决方案
MJPG
视频格式不支持 Alpha 通道。这只是一个JPEG
图像序列,JPEG
格式不支持透明度。您应该选择支持它的编解码器。但我不确定是否可以通过 OpenCV 获得,这取决于您的平台。
相反,您可以将每个图像保存为 PNG(带有 alpha 通道)并将它们与第三方工具(如 FFMPEG)合并。HAP 是我所知道的唯一支持 alpha 通道的免费和开源视频格式,但我并不了解所有这些格式。
推荐阅读
- python - 熊猫数据框:当列总和超过阈值时统一缩小值
- java - 有没有办法在片段中实现 setOnDateListener 并将数据发送到另一个片段?
- python - 对交叉表(数据透视表)结果使用 Script_REAL 函数
- matlab - Simulink:在 SimEvents 中获取属性
- javascript - 收到 TypeError:“选项未定义”错误消息
- reactjs - 页面刷新后useState值变为未定义
- c# - wifi断开/重新连接后服务发现死机
- c# - JsonConvert.DeserializeObject 失败并出现 errorm_memberName
- swift - 对 UIImage 数组执行 remove(at:[index]) 会导致内存泄漏
- java - 我的程序中的 InputMismatchException 处理?- 爪哇