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 - 获取当前py脚本文件所在的目录路径 阅读767次,点赞0次
- Python3 - 导入模块和函数 阅读3133次,点赞0次
- Python:UnicodeEncodeError: 'gbk' codec can't encode character '\xbb' in position 12305,以及中文乱码的解决方案 阅读3147次,点赞0次
- Python - 配置Yolov5出现ImportError: cannot import name 'PILLOW_VERSION' from 'PIL'错误 阅读1316次,点赞0次
- Python - BeautifulSoup的find()和findAll() 阅读2852次,点赞0次
- Python - 字典dict遍历方法总结 阅读669次,点赞0次
- Python - 使用scikit-video库获取视频的旋转角度并使用opencv_python根据旋转角度对视频进行旋转复原 阅读3155次,点赞1次
- Python - yaml配置用法详解以及使用Pyyaml库操作yaml文件 阅读928次,点赞0次
- Python - 在子线程中使用OpenCV异步读取摄像头视频帧传递到主线程中进行处理 阅读1310次,点赞1次
- Python - 使用命令行调用ffmpeg修改视频帧率,将60FPS的视频修改为30FPS的视频,视频时间保持不变 阅读475次,点赞0次
全站随机文章推荐
- 深度学习 - CNN中卷积层、池化层、全连接层的输出参数大小的计算 阅读745次,点赞1次
- WordPress - 异步发送邮件,解决发送邮件阻塞耗时的问题 阅读119次,点赞0次
- Modern OpenGL从零开始 - Fbxsdk::FbxAMatrix转换为glm::mat4 阅读2597次,点赞0次
- 资源分享 - 光线跟踪算法技术 Ray Tracing form the Ground Up中文版PDF下载 阅读1169次,点赞0次
- Duilib - Duilib的绘制机制和绘制流程 阅读444次,点赞1次
- C++STL容器 - std::vector元素访问方式总结 阅读930次,点赞0次
- 资源分享 - Handbook of Discrete and Computational Geometry, First Edition 英文高清PDF下载 阅读1637次,点赞2次
- 工具网站推荐 - 获取本机外网IP 阅读2797次,点赞0次
- 资源分享 - Real-Time Rendering, Third Edition 英文原版Pdf下载 阅读4759次,点赞0次
- OpenCV - 新建一个图片,并在图片上画由一点到另一点的直线,采用反走样形式 阅读3017次,点赞0次
评论
169