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脚本将视频抽帧为图像数据集


简介

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

代码

# 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()

相关推荐

  1. python脚本视频图像数据

    2024-06-06 17:48:10       10 阅读
  2. 【OpenCV】基于opencv的视频间隔脚本

    2024-06-06 17:48:10       9 阅读
  3. python视频转化图片并保存

    2024-06-06 17:48:10       15 阅读
  4. 基于C++和OpenCv对视频进行

    2024-06-06 17:48:10       12 阅读
  5. Python截取视频

    2024-06-06 17:48:10       26 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-06 17:48:10       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-06 17:48:10       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-06 17:48:10       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-06 17:48:10       18 阅读

热门阅读

  1. Golang获取文件名扩展名/后缀

    2024-06-06 17:48:10       9 阅读
  2. Nginx的负载均衡(加权轮询)

    2024-06-06 17:48:10       7 阅读
  3. 【Power Compiler手册】6.反标翻转活动

    2024-06-06 17:48:10       9 阅读
  4. C++基础-编程练习题和答案(数组)

    2024-06-06 17:48:10       8 阅读
  5. 查看电脑品牌

    2024-06-06 17:48:10       10 阅读
  6. Android基础-AndroidManifest.xml详解

    2024-06-06 17:48:10       8 阅读
  7. 说明 1px、1em、1rem、1vw、1vh 的区别

    2024-06-06 17:48:10       14 阅读
  8. springboot中使用RestTemplate 请求http接口

    2024-06-06 17:48:10       11 阅读
  9. 上传code至github的步骤

    2024-06-06 17:48:10       7 阅读
  10. 电脑问题和解决方法记录

    2024-06-06 17:48:10       8 阅读
  11. MyEclipse 新手使用教程

    2024-06-06 17:48:10       9 阅读