• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    opencv读取视频并保存图像的方法

    问题重述

    ​ 实习项目要做安全帽目标检测,拿到了公司给的一些视频数据,使用Opencv读取视频并每隔 1 s 1s 1s存储一副图像,下面是一些视频数据

    实现步骤 添加依赖库

    import cv2
    import os
    

    定义视频路径和图像存储路径

    video_path = './未戴安全帽视频01/'
    image_path = './images/'
    

    读取视频文件

    video_files = [i for i in os.listdir(video_path) if i.split('.')[-1] in ['mp4']]
    len(video_files)
    

    获取视频帧

    # video_file:'./未戴安全帽视频01/中建四局-东围墙5_001_2021-03-22-18-04-28_2021-03-22-18-04-33.mp4', 
    # pic_dir:'中建四局-东围墙5_001_2021-03-22-18-04-28_2021-03-22-18-04-33'
    def get_image(video_file, pic_dir):
        if not os.path.exists(pic_dir):
            os.makedirs(pic_dir)
        
        # cv2读取视频文件
        vc = cv2.VideoCapture(video_file)
        index = 0
        # 判断载入的视频是否可以打开
        rval = vc.isOpened()
        while rval:  # 循环读取视频帧
            index = index + 1
            
            rval, frame = vc.read()
            # 每十帧保存一张图片
            if index * 10 % 1 == 0:
                if rval:
                    # cv2.imshow("capture", frame)
                    save_file = pic_dir + str(index).zfill(5) + '.png'
                    cv2.imwrite(save_file, frame)  # 存储为图像,保存名为文件夹名
                    cv2.waitKey(1)
                else:
                    break
            vc.release()
        print("已保存%d" %(index - 1) + "张图片")
            
    # video_file = './未戴安全帽视频01/01.mp4'
    # pic_path = '01/'
    # get_image(video_file, image_path + pic_path)
    

    遍历视频文件

    for file in video_files:
        video_file = video_path + file
        pic_path = image_path + file.replace('.mp4', '/')
        get_image(video_file, pic_path)
    

    已保存1张图片
    已保存1张图片
    已保存1张图片
    已保存1张图片
    已保存1张图片
    已保存1张图片
    已保存1张图片
    已保存1张图片
    已保存1张图片
    已保存1张图片
    已保存1张图片
    已保存1张图片
    已保存1张图片
    已保存1张图片
    已保存1张图片
    已保存1张图片
    已保存1张图片
    已保存1张图片

    完整代码

    import cv2
    import os
    
    
    def save_img():
        video_path = r'F:\test\3.10'
        videos = os.listdir(video_path)
        for video_name in videos:
            file_name = video_name.split('.')[0]
            folder_name = video_path +'_'+ file_name
            os.makedirs(folder_name, exist_ok=True)
            print(video_path + '/' + video_name)
            vc = cv2.VideoCapture(video_path + '/' + video_name)
            # 读入视频文件
            c = 0
            rval = vc.isOpened()
    
            while rval:  # 循环读取视频帧
                c = c + 1
    
                rval, frame = vc.read()
                if c%10 ==0:
                    pic_path = folder_name + '/'
                    if rval:
                        cv2.imwrite(pic_path + str(c) + '.png', frame)  # 存储为图像,保存名为文件夹名
                        cv2.waitKey(1)
                    else:
                        break
            vc.release()
            print('save_success')
            print(folder_name)
    
    
    save_img()
    

    存在问题

    读取路径问题

    问题:读取视频结果显示没有打开视频,检查发现视频路径错误,导致没有正确打开

    解决:可以在读取之前检查路径,即判断要保存的文件夹是否存在,不存在就创建该文件夹。代码如下:

    if not os.path.exists(path):
        os.makedirs(path)
    

    中文路径问题

    问题:cv2.imwrite()保存图像路径不能存在中文字符,否则无法保存,并且没有任何提示!!!

    解决:改为英文路径即可。

    最终结果


    到此这篇关于opencv读取视频并保存图像的方法的文章就介绍到这了,更多相关opencv读取视频内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • Python OpenCV读取显示视频的方法示例
    • opencv3/C++实现视频读取、视频写入
    • 使用python-opencv读取视频,计算视频总帧数及FPS的实现
    • VS2010+Opencv+MFC读取图像和视频显示在Picture控件
    • Java使用OpenCV3.2实现视频读取与播放
    • python opencv 读取本地视频文件 修改ffmpeg的方法
    • Opencv实现读取摄像头和视频数据
    • opencv实现读取视频保存视频
    上一篇:Python还能这么玩之用Python做个小游戏的外挂
    下一篇:Python包argparse模块常用方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    opencv读取视频并保存图像的方法 opencv,读取,视频,并,保存,