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入门之语句(if语句、while语句、for语句)
Jan 19 Python
python使用正则表达式匹配字符串开头并打印示例
Jan 11 Python
Django权限机制实现代码详解
Feb 05 Python
windows环境下tensorflow安装过程详解
Mar 30 Python
python绘制直线的方法
Jun 30 Python
解决Python运行文件出现out of memory框的问题
Dec 03 Python
Python实现去除图片中指定颜色的像素功能示例
Apr 13 Python
命令行运行Python脚本时传入参数的三种方式详解
Oct 11 Python
Python脚本去除文件的只读性操作
Mar 05 Python
在pytorch中动态调整优化器的学习率方式
Jun 24 Python
Selenium环境变量配置(火狐浏览器)及验证实现
Dec 07 Python
全网最全python库selenium自动化使用详细教程
Jan 12 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
如何给phpadmin一个保护
2006/10/09 PHP
我常用的几个类
2006/10/09 PHP
php比较多维数组中值的大小排序实现代码
2012/09/08 PHP
php实现aes加密类分享
2014/02/16 PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
2017/08/09 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
jQuery实现新消息闪烁标题提示的方法
2015/03/11 Javascript
React.js入门实例教程之创建hello world 的5种方式
2016/05/11 Javascript
jQuery 获取多选框的值及多选框中文的函数
2016/05/16 Javascript
json传值以及ajax接收详解
2016/05/24 Javascript
javascript匀速动画和缓冲动画详解
2016/10/20 Javascript
Angular动态添加、删除输入框并计算值实例代码
2017/03/29 Javascript
20行JS代码实现网页刮刮乐效果
2017/06/23 Javascript
jquery单击文字或图片内容放大并居中显示
2017/06/23 jQuery
利用JS实现一个同Excel表现的智能填充算法
2018/08/13 Javascript
react-router4按需加载(踩坑填坑)
2019/01/06 Javascript
原生JS实现图片懒加载之页面性能优化
2019/04/26 Javascript
从零学python系列之教你如何根据图片生成字符画
2014/05/23 Python
python xlsxwriter库生成图表的应用示例
2018/03/16 Python
python实战之实现excel读取、统计、写入的示例讲解
2018/05/02 Python
python实现杨氏矩阵查找
2019/03/02 Python
python实现维吉尼亚算法
2019/03/20 Python
基于python解线性矩阵方程(numpy中的matrix类)
2019/10/21 Python
Python嵌套函数,作用域与偏函数用法实例分析
2019/12/26 Python
基于Python脚本实现邮件报警功能
2020/05/20 Python
python中元组的用法整理
2020/06/15 Python
伦敦哈德森鞋:Hudson Shoes
2018/02/06 全球购物
英国旅行箱包和行李箱购物网站:Travel Luggage & Cabin Bags
2019/08/26 全球购物
公务员年总结的自我评价
2013/10/25 职场文书
班级学习雷锋活动总结
2014/07/04 职场文书
学雷锋的心得体会
2014/09/04 职场文书
学生无故旷课检讨书
2014/09/20 职场文书
通报表扬范文
2015/01/17 职场文书
2016年寒假社会实践活动总结
2015/10/10 职场文书
浅谈Redis存储数据类型及存取值方法
2021/05/08 Redis
MySQL 8.0 驱动与阿里druid版本兼容问题解决
2021/07/01 MySQL