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,基本符合预期哦~

相关推荐
飞翔的佩奇1 小时前
【完整源码+数据集+部署教程】表盘指针检测系统源码和数据集:改进yolo11-CA-HSFPN
python·yolo·计算机视觉·数据集·yolo11·表盘指针检测
larance2 小时前
SQLAlchemy 的异步操作来批量保存对象列表
数据库·python
搏博2 小时前
基于Python3.10.6与jieba库的中文分词模型接口在Windows Server 2022上的实现与部署教程
windows·python·自然语言处理·flask·中文分词
小曾同学.com3 小时前
【每天学点‘音视频’】前向纠错 和 漏包重传
音视频·fec·前向纠错
胖虎13 小时前
(二十)深入了解 AVFoundation-编辑:使用 AVMutableVideoComposition 实现视频加水印与图层合成(下)——实战篇
音视频·视频编辑·视频添加水印
lxmyzzs4 小时前
pyqt5无法显示opencv绘制文本和掩码信息
python·qt·opencv
AI浩4 小时前
跟踪不稳定目标:基于外观引导的运动建模实现无人机视频中的鲁棒多目标跟踪
目标跟踪·音视频·无人机
萧鼎4 小时前
Python pyzmq 库详解:从入门到高性能分布式通信
开发语言·分布式·python
yujkss5 小时前
Python脚本每天爬取微博热搜-终版
开发语言·python
yzx9910135 小时前
小程序开发APP
开发语言·人工智能·python·yolo