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

相关推荐
꧁ᝰ苏苏ᝰ꧂6 分钟前
第一章 什么是量化金融
python·金融
ai产品老杨12 分钟前
架构师视点:基于 Docker 与边缘计算的百路异构视频中台,如何实现 GB28181/RTSP 统一接入与源码交付?
docker·音视频·边缘计算
EasyGBS17 分钟前
延迟直降90%!国标GB28181视频平台EasyGBS支持WebRTC WHIP推流设备接入,让万物互联更简单
音视频·webrtc
Hanniel19 分钟前
Python描述符(下):内置机制揭秘
开发语言·python·机器学习
Cloud_Shy61825 分钟前
解读《Effective Python 3rd Edition》:从练气到老魔(第七章 Item 52 - 53)
开发语言·人工智能·笔记·python
我不是FD27 分钟前
OpenAI vs Anthropic API 对比:流式返回 + Adapt 适配层完整方案
java·人工智能·python
nanawinona32 分钟前
手工策略转量化,回测到底是在验证什么?
人工智能·python
u1521096484932 分钟前
S.S.Audio PRO A202 音频隔离器
音视频·实时音视频·视频编解码·视频·被复线
协享科技35 分钟前
AI 视频理解:让 Agent 看视频并总结内容
人工智能·go·音视频·agent·ai编程