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 时间操作例子和时间格式化参数小结
Apr 24 Python
Python新手在作用域方面经常容易碰到的问题
Apr 03 Python
总结Python中逻辑运算符的使用
May 13 Python
Python3.2中Print函数用法实例详解
May 19 Python
python生成IP段的方法
Jul 07 Python
python构建自定义回调函数详解
Jun 20 Python
django中send_mail功能实现详解
Feb 06 Python
Selenium(Python web测试工具)基本用法详解
Aug 10 Python
python的schedule定时任务模块二次封装方法
Feb 19 Python
python suds访问webservice服务实现
Jun 26 Python
基于opencv实现简单画板功能
Aug 02 Python
python 进程池pool使用详解
Oct 15 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
全国FM电台频率大全 - 20 广西省
2020/03/11 无线电
dedecms模板标签代码官方参考
2007/03/17 PHP
php面向对象全攻略 (十六) 对象的串行化
2009/09/30 PHP
PHP面向对象的进阶学习(抽像类、接口、final、类常量)
2012/05/07 PHP
PHP中最容易忘记的一些知识点总结
2013/04/28 PHP
PHP实现文件上传与下载实例与总结
2016/03/13 PHP
使用Zttp简化Guzzle 调用
2017/07/02 PHP
Laravel框架中队列和工作(Queues、Jobs)操作实例详解
2020/04/06 PHP
ExtJS Grid使用SimpleStore、多选框的方法
2009/11/20 Javascript
js 绑定带参数的事件以及手动触发事件
2010/04/27 Javascript
javascript打印输出json实例
2013/11/11 Javascript
Jquery 实现checkbox全选方法
2015/01/28 Javascript
Vue实现购物车功能
2017/04/27 Javascript
JavaScript实现无穷滚动加载数据
2017/05/06 Javascript
利用Three.js如何实现阴影效果实例代码
2017/09/26 Javascript
使用vue-cli+webpack搭建vue开发环境的方法
2017/12/22 Javascript
如何给element添加一个抽屉组件的方法步骤
2019/07/14 Javascript
JS中的算法与数据结构之集合(Set)实例详解
2019/08/20 Javascript
微信小程序实现拖拽功能
2019/09/26 Javascript
解决vue 表格table列求和的问题
2019/11/06 Javascript
TypeScript 引用资源文件后提示找不到的异常处理技巧
2020/07/15 Javascript
python创建和删除目录的方法
2015/04/29 Python
Python读取指定日期邮件的实例
2019/02/01 Python
python+os根据文件名自动生成文本
2019/03/21 Python
python实现计数排序与桶排序实例代码
2019/03/28 Python
TensorFlow实现模型断点训练,checkpoint模型载入方式
2020/05/26 Python
PyQT5 实现快捷键复制表格数据的方法示例
2020/06/19 Python
python中os.remove()用法及注意事项
2021/01/31 Python
师范毕业生自荐信
2013/10/17 职场文书
承办会议欢迎词
2014/01/17 职场文书
六查六看自查材料
2014/02/17 职场文书
百年孤独读书笔记
2015/06/29 职场文书
《观潮》教学反思
2016/02/17 职场文书
2016年综治宣传月活动宣传标语口号
2016/03/16 职场文书
JDK8中String的intern()方法实例详细解读
2022/09/23 Java/Android
HTML5中的DOCUMENT.VISIBILITYSTATE属性详解
2023/05/07 HTML / CSS