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群发邮件实例代码
Jan 03 Python
python获取豆瓣电影简介代码分享
Jan 16 Python
Python比较配置文件的方法实例详解
Jun 06 Python
浅谈pyqt5在QMainWindow中布局的问题
Jun 21 Python
使用Windows批处理和WMI设置Python的环境变量方法
Aug 14 Python
如何分离django中的媒体、静态文件和网页
Nov 12 Python
Python numpy.zero() 初始化矩阵实例
Nov 27 Python
Python中私有属性的定义方式
Mar 05 Python
python实现超级玛丽游戏
Mar 18 Python
python中return如何写
Jun 18 Python
Pytorch上下采样函数--interpolate用法
Jul 07 Python
安装python依赖包psycopg2来调用postgresql的操作
Jan 01 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根据IP地址获取所在城市具体实现
2013/11/27 PHP
php中chdir()函数用法实例
2014/11/13 PHP
PHP实现二维数组中的查找算法小结
2018/06/09 PHP
PHP+redis实现微博的拉模型案例详解
2019/07/10 PHP
让iframe自适应高度(支持XHTML,支持FF)
2007/07/24 Javascript
jQuery .tmpl(), .template()学习资料小结
2011/07/18 Javascript
javascript 循环调用示例介绍
2013/11/20 Javascript
javascript针对cookie的基本操作实例详解
2015/11/30 Javascript
JavaScript动态添加css样式和script标签
2016/07/19 Javascript
js实现拖拽功能
2017/03/01 Javascript
JavaScript实现滑动导航栏效果
2017/08/30 Javascript
JS实现的全排列组合算法示例
2017/10/09 Javascript
javascript计算对象长度的方法
2017/10/25 Javascript
JS使用正则表达式找出最长连续子串长度
2017/10/26 Javascript
vue树形结构获取键值的方法示例
2018/06/21 Javascript
element上传组件循环引用及简单时间倒计时的实现
2018/10/01 Javascript
浅析vue-router原理
2018/10/19 Javascript
[02:36]DOTA2混沌骑士 英雄基础教程
2013/11/26 DOTA
解决谷歌搜索技术文章时打不开网页问题的python脚本
2013/02/10 Python
python调用短信猫控件实现发短信功能实例
2014/07/04 Python
Python基类函数的重载与调用实例分析
2015/01/12 Python
探索Python3.4中新引入的asyncio模块
2015/04/08 Python
Python抓取电影天堂电影信息的代码
2016/04/07 Python
python实现Dijkstra静态寻路算法
2019/01/17 Python
浅谈Python中eval的强大与危害
2019/03/13 Python
Python实现插入排序和选择排序的方法
2019/05/12 Python
PyQt5 QListWidget选择多项并返回的实例
2019/06/17 Python
python实现移动木板小游戏
2020/10/09 Python
伦敦哈德森鞋:Hudson Shoes
2018/02/06 全球购物
美国葡萄酒网上商店:Martha Stewart Wine Co.
2019/03/17 全球购物
Molton Brown美国官网:奢华美容、香水、沐浴和身体护理
2020/09/02 全球购物
抽样调查项目计划书
2014/04/24 职场文书
教师节学生演讲稿
2014/09/03 职场文书
2014年科协工作总结
2014/12/09 职场文书
幼儿园五一劳动节活动总结
2015/02/09 职场文书
2015年会计人员工作总结
2015/05/22 职场文书