python脚本将视频抽帧为图像数据集

AI应用开发相关目录

本专栏包括AI应用开发相关内容分享,包括不限于AI算法部署实施细节、AI应用后端分析服务相关概念及开发技巧、AI应用后端应用服务相关概念及开发技巧、AI应用前端实现路径及开发技巧
适用于具备一定算法及Python使用基础的人群

  1. AI应用开发流程概述
  2. Visual Studio Code及Remote Development插件远程开发
  3. git开源项目的一些问题及镜像解决办法
  4. python实现UDP报文通信
  5. python实现日志生成及定期清理
  6. Linux终端命令Screen常见用法
  7. python实现redis数据存储
  8. python字符串转字典
  9. python实现文本向量化及文本相似度计算
  10. python对MySQL数据的常见使用
  11. 一文总结python的异常数据处理示例
  12. 基于selenium和bs4的通用数据采集技术(附代码)
  13. 基于python的知识图谱技术
  14. 一文理清python学习路径
  15. Linux、Git、Docker常用指令
  16. linux和windows系统下的python环境迁移
  17. linux下python服务定时(自)启动
  18. windows下基于python语言的TTS开发
  19. python opencv实现图像分割
  20. python使用API实现word文档翻译
  21. yolo-world:"目标检测届大模型"
  22. 爬虫进阶:多线程爬虫
  23. python使用modbustcp协议与PLC进行简单通信
  24. ChatTTS:开源语音合成项目
  25. sqlite性能考量及使用(附可视化操作软件)
  26. 拓扑数据的关键点识别算法
  27. python脚本将视频抽帧为图像数据集

文章目录


简介

最近要做一些大模型多模态方面的工作,但缺少图像数据,这里分享一个脚本,可将视频抽帧为图像数据集

代码

python 复制代码
# coding=utf-8
import os
import cv2

videos_src_path = "C:\\Users\\Administrator\\Desktop\\shuju\\tupianjianji\\shipin\\"
# video_formats = [".MP4", ".MOV"]          我的数据集都是.mp4所以不需要进行分类判断
frames_save_path = "C:\\Users\\Administrator\\Desktop\\shuju\\tupianjianji\\train2\\"
width = 400
height = 300
time_interval = 10


def video2frame(video_src_path, frame_save_path, frame_width, frame_height, interval):
    """
    将视频按固定间隔读取写入图片
    :param video_src_path: 视频存放路径
    :param formats: 包含的所有视频格式
    :param frame_save_path: 保存路径
    :param frame_width: 保存帧宽
    :param frame_height: 保存帧高
    :param interval: 保存帧间隔
    :return: 帧图片
    """
    videos = os.listdir(video_src_path)

    # def filter_format(x, all_formats):      无需判断所以这部分代码也就不需要了
    #     if x[-4:] in all_formats:
    #         return True
    #     else:
    #         return False
    #
    # videos = filter(lambda x: filter_format(x, formats), videos)

    for each_video in videos:
        # print "正在读取视频:", each_video
        print("正在读取视频:", each_video)    # 我的是Python3.6

        each_video_name = each_video[:-4]
        os.mkdir(frame_save_path + each_video_name)
        each_video_save_full_path = os.path.join(frame_save_path, each_video_name) + "/"

        each_video_full_path = os.path.join(video_src_path, each_video)

        cap = cv2.VideoCapture(each_video_full_path)
        frame_index = 0
        frame_count = 0
        if cap.isOpened():
            success = True
        else:
            success = False
            print("读取失败!")

        while(success):
            success, frame = cap.read()
           # print "---> 正在读取第%d帧:" % frame_index, success
            print("---> 正在读取第%d帧:" % frame_index, success)      # 我的是Python3.6

            if frame_index % interval == 0 and success:     # 如路径下有多个视频文件时视频最后一帧报错因此条件语句中加and success
                resize_frame = cv2.resize(frame, (frame_width, frame_height), interpolation=cv2.INTER_AREA)
                # cv2.imwrite(each_video_save_full_path + each_video_name + "_%d.jpg" % frame_index, resize_frame)
                cv2.imwrite(each_video_save_full_path + "%d.jpg" % frame_count, resize_frame)
                frame_count += 1

            frame_index += 1

    cap.release()		

def main():
    video2frame(videos_src_path, frames_save_path, width, height, time_interval)
if __name__ == '__main__':
    main()
相关推荐
B站_计算机毕业设计之家36 分钟前
Spark微博舆情分析系统 情感分析 爬虫 Hadoop和Hive 贴吧数据 双平台 讲解视频 大数据 Hadoop ✅
大数据·hadoop·爬虫·python·数据分析·1024程序员节·舆情分析
Q一件事42 分钟前
R语言随机森林分析显示R方和P值
开发语言·随机森林·r语言
我是华为OD~HR~栗栗呀43 分钟前
华为OD-Java面经-21届考研
java·c++·后端·python·华为od·华为·面试
Mr.Jessy1 小时前
JavaScript学习第六天:函数
开发语言·前端·javascript·学习·html·1024程序员节
刺客-Andy1 小时前
Python 第二十节 正则表达式使用详解及注意事项
python·mysql·正则表达式
九皇叔叔2 小时前
Java循环结构全解析:从基础用法到性能优化
java·开发语言·性能优化
sulikey2 小时前
Qt 入门简洁笔记:从框架概念到开发环境搭建
开发语言·前端·c++·qt·前端框架·visual studio·qt框架
zzzsde2 小时前
【C++】stack和queue:优先级队列的使用及底层原理
开发语言·c++
新子y2 小时前
【小白笔记】「while」在程序语言中的角色
笔记·python
java1234_小锋2 小时前
[免费]基于Python的YOLO深度学习垃圾分类目标检测系统【论文+源码】
python·深度学习·yolo·垃圾分类·垃圾分类检测