Python – 读取视频为numpy数组以及将numpy数组转换为视频
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:Python – 读取视频为numpy数组以及将numpy数组转换为视频
原文链接:https://www.stubbornhuang.com/2195/
发布于:2022年07月06日 9:04:35
修改于:2022年07月06日 9:04:35

1 读取视频为numpy数组以及将numpy数组转换为视频
1.1 读取视频为numpy数组
def video_to_numpy_array(video_path):
rgb_frame_list = []
video_read_capture = cv2.VideoCapture(video_path)
while video_read_capture.isOpened():
result, frame = video_read_capture.read()
if not result:
break
rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
rgb_frame_list.append(rgb_frame)
video_read_capture.release()
video_nparray = np.array(rgb_frame_list)
return video_nparray
1.2 将numpy数组转换为视频
def numpy_array_to_video(numpy_array,video_out_path):
video_height = numpy_array.shape[1]
video_width = numpy_array.shape[2]
out_video_size = (video_width,video_height)
output_video_fourcc = int(cv2.VideoWriter_fourcc(*'mp4v'))
video_write_capture = cv2.VideoWriter(video_out_path, output_video_fourcc, 30, out_video_size)
for frame in numpy_array:
video_write_capture.write(frame)
video_write_capture.release()
1.3 使用示例
# -*- coding: utf-8 -*-
import numpy as np
import cv2
def video_to_numpy_array(video_path):
rgb_frame_list = []
video_read_capture = cv2.VideoCapture(video_path)
while video_read_capture.isOpened():
result, frame = video_read_capture.read()
if not result:
break
rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
rgb_frame_list.append(rgb_frame)
video_read_capture.release()
video_nparray = np.array(rgb_frame_list)
return video_nparray
def numpy_array_to_video(numpy_array,video_out_path):
video_height = numpy_array.shape[1]
video_width = numpy_array.shape[2]
out_video_size = (video_width,video_height)
output_video_fourcc = int(cv2.VideoWriter_fourcc(*'mp4v'))
video_write_capture = cv2.VideoWriter(video_out_path, output_video_fourcc, 30, out_video_size)
for frame in numpy_array:
video_write_capture.write(frame)
video_write_capture.release()
if __name__ == '__main__':
video_input_path = r'C:\Users\Administrator\Desktop\1.mp4'
video_output_path = r'C:\Users\Administrator\Desktop\1_out.mp4'
# 将视频读取为维度为N * W * H * C的numpy数组
video_np_array = video_to_numpy_array(video_input_path)
# 将numpy数组写为视频
numpy_array_to_video(video_np_array,video_output_path)
当前分类随机文章推荐
- Python - 运算符/、//和%的含义与区别 阅读264次,点赞0次
- Python - 使用python-opencv裁剪原视频为与视频高同宽的视频 阅读1358次,点赞0次
- Python3 - 正则表达式去除字符串中的特殊符号 阅读12835次,点赞1次
- 解决Python爬虫在爬资源过程中使用urlretrieve函数下载文件不完全且避免下载时长过长陷入死循环,并在下载文件的过程中显示下载进度 阅读3760次,点赞0次
- Python - opencv-python保存视频时出现Failed to load OpenH264 library: openh264-1.8.0-win64.dll错误 阅读652次,点赞0次
- Python - 不定长函数参数列表 阅读1822次,点赞0次
- Python - 读取视频为numpy数组以及将numpy数组转换为视频 阅读1038次,点赞0次
- Python3爬虫 - requests库 阅读3534次,点赞3次
- Python - glob模块详解以及glob.glob、glob.iglob函数的使用 阅读780次,点赞0次
- Python - 不依赖第三方库对类对象进行json序列化与反序列化 阅读1242次,点赞0次
全站随机文章推荐
- UnrealEngine4 - error C4668: 没有将“_WIN32_WINNT_WIN10_TH2”定义为预处理器宏,用“0”替换“#if/#elif 阅读4519次,点赞0次
- Pytorch - nn.Transformer、nn.TransformerEncoderLayer、nn.TransformerEncoder、nn.TransformerDecoder、nn.TransformerDecoder参数详解 阅读1350次,点赞1次
- 资源分享 - GPU Pro 3 - Advanced Rendering Techniques 英文高清PDF下载 阅读1918次,点赞0次
- 资源分享 - Cloth Simulation for Computer Graphics 英文高清PDF下载 阅读2003次,点赞0次
- WordPress - 在文章被复制时弹出弹窗提示转载注明原创 阅读2936次,点赞2次
- 资源分享 - Learning Vulkan 英文高清PDF下载 阅读1870次,点赞0次
- 资源分享 - Isosurfaces - Geometry, Topology, and Algorithms 英文高清PDF下载 阅读1755次,点赞0次
- 资源分享 - Fundamentals of Computer Graphics, Fifth Edition 英文高清PDF下载 阅读4623次,点赞0次
- 资源分享 - TCP/IP网络编程(韩 尹圣雨著 金国哲译)PDF下载 阅读5217次,点赞1次
- 书籍翻译 - Cloth Simulation for Computer Graphics 中文翻译 阅读354次,点赞0次
评论
164