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


Posted in Python onJune 04, 2021

问题重述

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

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

实现步骤 添加依赖库

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读取视频并保存图像的方法

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

Python 相关文章推荐
python用ConfigObj读写配置文件的实现代码
Mar 04 Python
如何搜索查找并解决Django相关的问题
Jun 30 Python
python常用web框架简单性能测试结果分享(包含django、flask、bottle、tornado)
Aug 25 Python
跟老齐学Python之玩转字符串(2)更新篇
Sep 28 Python
python实现数值积分的Simpson方法实例分析
Jun 05 Python
Python编程入门之Hello World的三种实现方式
Nov 13 Python
Python编程scoketServer实现多线程同步实例代码
Jan 29 Python
PYTHON基础-时间日期处理小结
May 05 Python
python实现五子棋人机对战游戏
Mar 25 Python
python 单线程和异步协程工作方式解析
Sep 28 Python
Python 3.8正式发布,来尝鲜这些新特性吧
Oct 15 Python
Python sklearn库实现PCA教程(以鸢尾花分类为例)
Feb 24 Python
Python还能这么玩之用Python做个小游戏的外挂
Jun 04 #Python
python opencv旋转图片的使用方法
Python还能这么玩之用Python修改了班花的开机密码
Anaconda安装pytorch及配置PyCharm 2021环境
python如何利用cv2模块读取显示保存图片
Jun 04 #Python
Python实现socket库网络通信套接字
Jun 04 #Python
python cv2图像质量压缩的算法示例
Jun 04 #Python
You might like
PHP  实现等比压缩图片尺寸和大小实例代码
2016/10/08 PHP
关于可运行代码无法正常执行的使用说明
2010/05/13 Javascript
使用jquery菜单插件HoverTree仿京东无限级菜单
2014/12/18 Javascript
jQuery实现按钮点击遮罩加载及处理完后恢复的效果
2016/06/07 Javascript
微信小程序 开发之快递查询功能的实现
2017/01/09 Javascript
JavaScript 中 apply 、call 的详解
2017/03/21 Javascript
基于jquery实现五星好评
2017/11/18 jQuery
webpack引入eslint配置详解
2018/01/22 Javascript
nodejs读取本地中文json文件出现乱码解决方法
2018/10/10 NodeJs
详解JavaScript 的变量
2019/03/08 Javascript
3分钟了解vue数据劫持的原理实现
2019/05/01 Javascript
一文了解vue-router之hash模式和history模式
2019/05/31 Javascript
在LayUI图片上传中,解决由跨域问题引起的请求接口错误的方法
2019/09/24 Javascript
浅析vue-router中params和query的区别
2019/12/24 Javascript
浅谈webpack和webpack-cli模块源码分析
2020/01/19 Javascript
基于ant design日期控件使用_仅月份的操作
2020/10/27 Javascript
Cython 三分钟入门教程
2009/09/17 Python
python解析发往本机的数据包示例 (解析数据包)
2014/01/16 Python
Python标准库sched模块使用指南
2017/07/06 Python
python做量化投资系列之比特币初始配置
2018/01/23 Python
Tesserocr库的正确安装方式
2018/10/19 Python
keras实现调用自己训练的模型,并去掉全连接层
2020/06/09 Python
Python爬虫爬取微博热搜保存为 Markdown 文件的源码
2021/02/22 Python
HTML5 Canvas绘制圆点虚线实例
2015/01/01 HTML / CSS
canvas中普通动效与粒子动效的实现代码示例
2019/01/03 HTML / CSS
怎样实现H5+CSS3手指滑动切换图片的示例代码
2019/05/05 HTML / CSS
Melijoe时尚童装德国官网:Melijoe德国
2016/09/03 全球购物
伊利莎白雅顿官网:Elizabeth Arden
2016/10/10 全球购物
团员学习总结的自我评价范文
2013/10/14 职场文书
司机岗位职责
2013/11/15 职场文书
小学班长竞选演讲稿
2014/04/24 职场文书
党员自我对照检查材料
2014/08/19 职场文书
房产转让协议书(2014版)
2014/09/30 职场文书
一般纳税人申请报告
2015/05/18 职场文书
2019年XX公司的晨会制度及流程!
2019/07/23 职场文书
基于CSS制作创意端午节专属加载特效
2022/06/01 HTML / CSS