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查询Mysql时返回字典结构的代码
Jun 18 Python
python监控网卡流量并使用graphite绘图的示例
Apr 27 Python
python使用Queue在多个子进程间交换数据的方法
Apr 18 Python
Python易忽视知识点小结
May 25 Python
python基于http下载视频或音频
Jun 20 Python
Python读取excel中的图片完美解决方法
Jul 27 Python
在python中pandas的series合并方法
Nov 12 Python
python制作英语翻译小工具代码实例
Sep 09 Python
python脚本实现音频m4a格式转成MP3格式的实例代码
Oct 09 Python
python global和nonlocal用法解析
Feb 03 Python
Python在centos7.6上安装python3.9的详细教程(默认python版本为2.7.5)
Oct 15 Python
Python爬虫设置Cookie解决网站拦截并爬取蚂蚁短租的问题
Feb 22 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常用ODBC函数集(详细)
2013/06/24 PHP
PHP中可以自动分割查询字符的Parse_str函数使用示例
2014/07/25 PHP
Laravel Eloquent ORM 多条件查询的例子
2019/10/10 PHP
[IE&FireFox兼容]JS对select操作
2007/01/07 Javascript
showModalDialog 和 showModelessDialog
2007/01/22 Javascript
用Jquery实现可编辑表格并用AJAX提交到服务器修改数据
2009/12/27 Javascript
jquery-easyui关闭tab自动切换到前一个tab
2010/07/29 Javascript
JS Range HTML文档/文字内容选中、库及应用介绍
2011/05/12 Javascript
js中substring和substr的详细介绍与用法
2013/08/29 Javascript
多种方法判断Javascript对象是否存在
2013/09/22 Javascript
js判断游览器类型及版本号的代码
2014/05/11 Javascript
JS应用正则表达式转换大小写示例
2014/09/18 Javascript
js实现按钮颜色渐变动画效果
2015/08/20 Javascript
jQuery自定义动画函数实例详解(附demo源码)
2015/12/10 Javascript
JS简单获取及显示当前时间的方法
2016/08/03 Javascript
Bootstrap标签页(Tab)插件使用方法
2017/03/21 Javascript
微信小程序实战之登录页面制作(5)
2020/03/30 Javascript
node.js操作mysql简单实例
2017/05/25 Javascript
Node接收电子邮件的实例代码
2017/07/21 Javascript
原生js中ajax访问的实例详解
2017/09/19 Javascript
javaScript中"=="和"==="的区别详解
2018/03/16 Javascript
jquery实现下载图片功能
2019/07/18 jQuery
js实现简单五子棋游戏
2020/05/28 Javascript
通过实例解析js可枚举属性与不可枚举属性
2020/12/02 Javascript
Python实现的石头剪子布代码分享
2014/08/22 Python
Python获取电脑硬件信息及状态的实现方法
2014/08/29 Python
在Python中使用HTML模版的教程
2015/04/29 Python
python 通过xml获取测试节点和属性的实例
2018/03/31 Python
pandas将numpy数组写入到csv的实例
2018/07/04 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
2020/03/19 Python
python可迭代对象去重实例
2020/05/15 Python
一个非常简单好用的Python图形界面库(PysimpleGUI)
2020/12/28 Python
CSS3属性box-shadow使用指南
2014/12/09 HTML / CSS
就业推荐表自我鉴定
2013/10/29 职场文书
教师求职自荐信
2014/03/09 职场文书
教师节晚会主持词
2015/06/30 职场文书