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

相关推荐
jndingxin7 分钟前
OpenCV相机标定与3D重建(1)概述
数码相机·opencv·3d
CSXB9919 分钟前
三十四、Python基础语法(文件操作-上)
开发语言·python·功能测试·测试工具
亚图跨际1 小时前
MATLAB和Python及R潜变量模型和降维
python·matlab·r语言·生物学·潜变量模型
IT古董1 小时前
【机器学习】决定系数(R²:Coefficient of Determination)
人工智能·python·机器学习
德育处主任Pro1 小时前
『Django』APIView基于类的用法
后端·python·django
Star Patrick1 小时前
算法训练(leetcode)二刷第十九天 | *39. 组合总和、*40. 组合总和 II、*131. 分割回文串
python·算法·leetcode
hunandede2 小时前
FFmpeg 4.3 音视频-多路H265监控录放C++开发十三:将AVFrame转换成AVPacket。视频编码,AVPacket 重要函数,结构体成员学习
c++·ffmpeg·音视频
橘子味的茶二2 小时前
SDL读取PCM音频
ffmpeg·音视频·pcm
武子康2 小时前
大数据-213 数据挖掘 机器学习理论 - KMeans Python 实现 距离计算函数 质心函数 聚类函数
大数据·人工智能·python·机器学习·数据挖掘·scikit-learn·kmeans
写点什么啦3 小时前
使用R语言survminer获取生存分析高风险和低风险的最佳截断值cut-off
开发语言·python·r语言·生存分析·x-tile