OpenCV下的视频和帧图片转换(Video2Frame&Frame2Video, VideoCapture&VideoWriter)

OpenCV下的视频和帧图片转换(Video2Frame&Frame2Video, VideoCaptur e&VideoWriter)

文章目录

  • [1. 杂话](#1. 杂话)
  • [2. 视频转图片(Video2Frame, VideoCapture)](#2. 视频转图片(Video2Frame, VideoCapture))
    • [2.1 先看代码](#2.1 先看代码)
  • [3. 图片转视频(Frame2Video, VideoWriter)](#3. 图片转视频(Frame2Video, VideoWriter))
    • [3.1 先看代码](#3.1 先看代码)
    • [3.2 看看参数解释](#3.2 看看参数解释)

1. 杂话

这就很直观了嘛,就是如何通过opencv来进行视频和帧图片的转换,就。。。没啥好说的吧。直接看代码:

2. 视频转图片(Video2Frame, VideoCapture)

2.1 先看代码

python 复制代码
import os
import cv2

def video_to_frames(video_path, frames_dir):
	cap = cv2.VideoCapture(video_path)
	frame_count = 0
	while True:
		ret, frame = cap.read()
		if not ret:
			break
		frame_filename = os.path.join(frames_dir, \
		f"{frame_count:04d}.jpg")
		cv2.imwrite(frame_filename, frame)
		frame_count += 1
		
	cap.release()

3. 图片转视频(Frame2Video, VideoWriter)

3.1 先看代码

python 复制代码
import os
import cv2

def frame_to_video(frame_folder, video_name, fps):
	frames = [frame for frame in os.listdir(frame_folder) \
	if frame.endswith(".jpg")]
	frames.sort(key = lambda x : int(os.path.splitext(x)[0]))
	
	frame_0 = cv2.imread(os.path.join(frame_folder, frames[0]))
	height, width, layers = frame_0.shape
	
	fourcc = cv2.VideoWriter_fourcc(*'mp4v')
	video = cv2.VideoWriter(video_name, fourcc, fps, \
	(width, height))
	
	for frame in frames:
		video.write(cv2.imread(os.path.\
		join(frame_folder, frame)))
	
	video.release()

3.2 看看参数解释

FOURCC 是 "Four-Character Code" 的缩写,用于指定视频流的编码格式。在 OpenCV 中使用 cv2.VideoWriter_fourcc 来创建 FOURCC 编码器标识符。不同的 FOURCC 值对应不同的视频编码格式,以下是一些常见的 FOURCC 值及其对应的视频文件类型:

  • XVID
    文件类型: .avi
    描述: Xvid MPEG-4 编码器,广泛用于 AVI 文件格式。
  • MP4V
    文件类型: .mp4
    描述: MPEG-4 视频编码器,适用于生成 MP4 文件。推荐使用现代格式。
  • MJPG
    文件类型: .avi
    描述: Motion JPEG 编码器,使用逐帧压缩的方式保存视频。每一帧都是一张 JPEG 图像。
  • X264
    文件类型: .mp4
    描述: H.264 编码器,提供高压缩率和优良的画质,适合生成 MP4 文件。
  • DIVX
    文件类型: .avi
    描述: DivX 编码器,早期常用于网络视频流媒体。
  • H264
    文件类型: .mp4
    描述: H.264 编码器,与 X264 类似,但更多用于硬件加速编码。
  • WMV1
    文件类型: .wmv
    描述: Windows Media Video 编码器,通常用于 WMV 文件。
  • AVC1
    文件类型: .mp4
    描述: H.264/MPEG-4 AVC 编码器,常用于高清内容,适合 MP4 文件。
  • I420
    文件类型: .avi
    描述: YUV 4:2:0 编码,通常用于未压缩的原始视频流。
  • PIM1
    文件类型: .mpeg
    描述: MPEG-1 视频编码器,适用于早期的 MPEG 视频文件。

OK,基本符合预期哦~

相关推荐
梧桐树04292 小时前
python常用内建模块:collections
python
Dream_Snowar2 小时前
速通Python 第三节
开发语言·python
蓝天星空3 小时前
Python调用open ai接口
人工智能·python
jasmine s4 小时前
Pandas
开发语言·python
郭wes代码4 小时前
Cmd命令大全(万字详细版)
python·算法·小程序
leaf_leaves_leaf4 小时前
win11用一条命令给anaconda环境安装GPU版本pytorch,并检查是否为GPU版本
人工智能·pytorch·python
夜雨飘零14 小时前
基于Pytorch实现的说话人日志(说话人分离)
人工智能·pytorch·python·声纹识别·说话人分离·说话人日志
404NooFound4 小时前
Python轻量级NoSQL数据库TinyDB
开发语言·python·nosql
天天要nx4 小时前
D102【python 接口自动化学习】- pytest进阶之fixture用法
python·pytest
minstbe4 小时前
AI开发:使用支持向量机(SVM)进行文本情感分析训练 - Python
人工智能·python·支持向量机