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 制作图片转pdf工具
Jan 30 Python
python实现用户登录系统
May 21 Python
Python编程中装饰器的使用示例解析
Jun 20 Python
Windows下安装python MySQLdb遇到的问题及解决方法
Mar 16 Python
Python实现将sqlite数据库导出转成Excel(xls)表的方法
Jul 17 Python
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
Apr 23 Python
使用TensorFlow实现二分类的方法示例
Feb 05 Python
ipad上运行python的方法步骤
Oct 12 Python
pygame实现俄罗斯方块游戏(基础篇1)
Oct 29 Python
python创建n行m列数组示例
Dec 02 Python
Pytorch自己加载单通道图片用作数据集训练的实例
Jan 18 Python
用Python制作灯光秀短视频的思路详解
Apr 13 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
用PHP4访问Oracle815
2006/10/09 PHP
mysql 查询指定日期时间内sql语句实现原理与代码
2012/12/16 PHP
PHP将session信息存储到数据库的类实例
2015/03/04 PHP
PHP伪造来源HTTP_REFERER的方法实例详解
2015/07/06 PHP
CodeIgniter表单验证方法实例详解
2016/03/03 PHP
为jQuery.Treeview添加右键菜单的实现代码
2010/10/22 Javascript
JQuery中html()方法使用不当带来的陷阱
2011/04/07 Javascript
网页中返回顶部代码(多种方法)另附注释说明
2013/04/24 Javascript
javascript实现的固定位置悬浮窗口实例
2015/04/30 Javascript
javascript判断并获取注册表中可信任站点的方法
2015/06/01 Javascript
jQuery鼠标经过方形图片切换成圆边效果代码分享
2015/08/20 Javascript
JavaScript+CSS实现仿Mootools竖排弹性动画菜单效果
2015/10/14 Javascript
jQuery使用zTree插件实现树形菜单和异步加载
2016/02/25 Javascript
JavaScript制作弹出层效果
2016/12/02 Javascript
简单的vue-resourse获取json并应用到模板示例
2017/02/10 Javascript
jQuery插件zTree实现更新根节点中第i个节点名称的方法示例
2017/03/08 Javascript
JavaScript转换数据库DateTime字段类型方法
2017/06/27 Javascript
vue多种弹框的弹出形式的示例代码
2017/09/18 Javascript
详解JS中统计函数执行次数与执行时间
2018/09/04 Javascript
react项目实践之webpack-dev-serve
2018/09/14 Javascript
vue element-ui el-date-picker限制选择时间为当天之前的代码
2019/11/07 Javascript
javascript跳转与返回和刷新页面的实例代码
2019/11/20 Javascript
jquery选择器和属性对象的操作实例分析
2020/01/10 jQuery
VUE实现Studio管理后台之鼠标拖放改变窗口大小
2020/03/04 Javascript
OpenLayers3实现地图鹰眼以及地图比例尺的添加
2020/09/25 Javascript
js+html+css实现手动轮播和自动轮播
2020/12/30 Javascript
[16:04]DOTA2海涛带你玩炸弹 9月5日更新内容详解
2014/09/05 DOTA
介绍Python的Django框架中的静态资源管理器django-pipeline
2015/04/25 Python
pandas pivot_table() 按日期分多列数据的方法
2018/11/16 Python
Python统计时间内的并发数代码实例
2019/12/28 Python
财务管理专业应届毕业生求职信
2013/09/22 职场文书
大学社团活动策划书
2014/01/26 职场文书
甜美蛋糕店创业计划书
2014/01/30 职场文书
实习协议书范本
2014/09/25 职场文书
国家税务局领导班子对照检查材料思想汇报
2014/10/04 职场文书
导游词之珠海轮廓
2019/10/25 职场文书