wordpress站点更换域名,广告设计找工作,网页设计图片加载不出,汕尾网站设计在人工智能爆火的今天#xff0c;深度学习被广泛应用于各个领域。深度学习的模型训练离不开大量的样本库。我之前分享过【Python爬虫】批量爬取网页的图片制作数据集#xff0c;今天跟大家分享一下如何使用OpenCV库对视频进行抽帧#xff0c;从而增加样本图片的数量。正… 在人工智能爆火的今天深度学习被广泛应用于各个领域。深度学习的模型训练离不开大量的样本库。我之前分享过【Python爬虫】批量爬取网页的图片制作数据集今天跟大家分享一下如何使用OpenCV库对视频进行抽帧从而增加样本图片的数量。正好也顺便分享一下如何再将图片组合成视频。当然视频的抽帧组帧还可以应用到很多邻域我这里是用在制作样本的。 1 视频分解图片拆帧
1.1 主函数介绍代码 cv2.VideoCapture()是OpenCV库中的一个函数用于读取视频文件或实时视频流。它返回一个视频捕获对象可以通过这个对象进行视频的读取、操作和释放等操作。 使用cv2.VideoCapture()可以读取视频文件或实时视频流中的每一帧图像。通过循环读取帧可以获取视频中的所有帧。 这里入参中的target_frame是指间隔多少帧保存一张图片如果输入1则全部保存。若视频帧率为60每秒60张图片你设置target_frame为120则两秒保存一张图片。
def Frame_video(video_path, out_path, target_frame1)::param video_path: 需要拆帧的视频路径:param out_path: 拆帧后图片保存路径:param target_frame: 抽取帧数间隔默认为1即1帧保存1张图片:return: Noneprint(-------------------------视频抽帧-------------------------)if not os.path.exists(out_path):# 判断文件夹是否存在os.makedirs(out_path)video cv2.VideoCapture() # 初始化一个OpenCV的视频读取对象video.open(video_path)count 0 # 记录当前帧数image_index 1000001 # 用于保存图片名称frames int(video.get(cv2.CAP_PROP_FRAME_COUNT)) # 获取帧数print(视频共%s帧抽取%s帧...... % (frames, int(frames/target_frame)))while True:_, frame video.read()if frame is None:# print(第%s帧图片无法打开 % count)breakif count % target_frame 0:if int((image_index-1000000) / int(frames/target_frame) * 100) in [20, 40, 60, 80]:print(已提取百分之%s,剩余%s帧...... %(int((image_index-1000000) / int(frames/target_frame) * 100),int(frames / target_frame) - image_index 1000000))save_path out_path %s.png % image_indexcv2.imwrite(save_path, frame)image_index 1count 1video.release()print(视频已全部抽帧完成......)print(-------------------------抽帧完成-------------------------)
1.2 完整代码
# -*- coding: utf-8 -*-Time 2023/10/25 14:26
Auth RS迷途小书童
File Video Frame Images.py
IDE PyCharm
Purpose视频拆帧成图片import os
import sys
import cv2def Frame_video(video_path, out_path, target_frame1)::param video_path: 需要拆帧的视频路径:param out_path: 拆帧后图片保存路径:param target_frame: 抽取帧数间隔默认为1即1帧保存1张图片:return: Noneprint(-------------------------视频抽帧-------------------------)if not os.path.exists(out_path):# 判断文件夹是否存在os.makedirs(out_path)video cv2.VideoCapture() # 初始化一个OpenCV的视频读取对象video.open(video_path)count 0 # 记录当前帧数image_index 1000001 # 用于保存图片名称frames int(video.get(cv2.CAP_PROP_FRAME_COUNT)) # 获取帧数print(视频共%s帧抽取%s帧...... % (frames, int(frames/target_frame)))while True:_, frame video.read()if frame is None:# print(第%s帧图片无法打开 % count)breakif count % target_frame 0:if int((image_index-1000000) / int(frames/target_frame) * 100) in [20, 40, 60, 80]:print(已提取百分之%s,剩余%s帧...... %(int((image_index-1000000) / int(frames/target_frame) * 100),int(frames / target_frame) - image_index 1000000))save_path out_path %s.png % image_indexcv2.imwrite(save_path, frame)image_index 1count 1video.release()print(视频已全部抽帧完成......)print(-------------------------抽帧完成-------------------------)if __name__ __main__:print(\n-------------------------基础信息-------------------------)Video_path rG:\D.MP4save_dir rB:\YOLO\18/video1 cv2.VideoCapture() # 初始化一个OpenCV的视频读取对象if not video1.open(Video_path):print(无法打开视频请检查数据)sys.exit()fps video1.get(cv2.CAP_PROP_FPS) # 获取帧率frame_count int(video1.get(cv2.CAP_PROP_FRAME_COUNT)) # 获取视频的总帧数video1.release() # 清理缓存duration frame_count / fps # 计算视频的时长秒print(视频时长为: %ss % int(duration))print(视频帧率为: %sFPS % int(fps))print(视频帧数为: %s % int(frame_count))Frame int(input(请输入抽取帧数间隔))Frame_video(Video_path, save_dir, Frame)2 图片组合视频组帧
2.1 主函数介绍代码 cv2.VideoWriter函数用于将录制的视频保存成文件。它需要指定文件路径、编码器、帧率和视频尺寸等参数。
def Image_Frame(images_path, out_path, fps)::param images_path: 输入需要组帧的图片文件夹路径:param out_path: 输出视频路径:param fps: 视频帧率:return: Noneprint(-------------------------图片组帧-------------------------)images_lists os.listdir(images_path) # images_lists.sort()image_size Image.open(os.path.join(images_path, images_lists[0])).sizefourcc cv2.VideoWriter_fourcc(*mp4v)video_writer cv2.VideoWriter(out_path, fourcc, fps, image_size)for image_list in images_lists:image_path os.path.join(images_path, image_list)frame cv2.imread(image_path)video_writer.write(frame)print(正在添加:, image_list)video_writer.release()print(-------------------------组帧完成-------------------------)
2.2 完整代码
# -*- coding: utf-8 -*-Time 2023/10/25 16:00
Auth RS迷途小书童
File Images Frame Video.py
IDE PyCharm
Purpose图片组帧成视频import os
import cv2
from PIL import Imagedef Image_Frame(images_path, out_path, fps)::param images_path: 输入需要组帧的图片文件夹路径:param out_path: 输出视频路径:param fps: 视频帧率:return: Noneprint(-------------------------图片组帧-------------------------)images_lists os.listdir(images_path) # images_lists.sort()image_size Image.open(os.path.join(images_path, images_lists[0])).sizefourcc cv2.VideoWriter_fourcc(*mp4v)video_writer cv2.VideoWriter(out_path, fourcc, fps, image_size)for image_list in images_lists:image_path os.path.join(images_path, image_list)frame cv2.imread(image_path)video_writer.write(frame)print(正在添加:, image_list)video_writer.release()print(-------------------------组帧完成-------------------------)if __name__ __main__:Image_path rG:\1/Out_path rG:\1.mp4FPS int(input(请输入帧率))Image_Frame(Image_path, Out_path, FPS)本次博文就分享到这如果大家有RS、GIS、Python方面的问题欢迎大家留言交流。我们一起学习进步