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实现2048小游戏
Mar 30 Python
python实现kNN算法
Dec 20 Python
matplotlib绘制动画代码示例
Jan 02 Python
Django权限机制实现代码详解
Feb 05 Python
解决pyinstaller打包pyqt5的问题
Jan 08 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
Jan 17 Python
python3 自动识别usb连接状态,即对usb重连的判断方法
Jul 03 Python
python 将日期戳(五位数时间)转换为标准时间
Jul 11 Python
python有序查找算法 二分法实例解析
Feb 18 Python
Tensorflow卷积实现原理+手写python代码实现卷积教程
May 22 Python
python 利用PyAutoGUI快速构建自动化操作脚本
May 31 Python
Python 中 Shutil 模块详情
Nov 11 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
上传文件先创建目录 再上传到目录里面去
2010/12/29 PHP
PHP使用适合阅读的格式显示文件大小的方法
2015/03/05 PHP
详解php中的implements 使用
2017/06/13 PHP
php strftime函数获取日期时间(switch用法)
2018/05/16 PHP
PHP超级全局变量【$GLOBALS,$_SERVER,$_REQUEST等】用法实例分析
2019/12/11 PHP
js获取提交的字符串的字节数
2009/02/09 Javascript
Extjs学习笔记之二 初识Extjs之Form
2010/01/07 Javascript
jQuery中live()方法用法实例
2015/01/19 Javascript
全面解析Bootstrap表单使用方法(表单控件)
2015/11/24 Javascript
深入理解Node.js 事件循环和回调函数
2016/11/02 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的三大方法
2017/01/22 Javascript
Angular搜索场景中使用rxjs的操作符处理思路
2018/05/30 Javascript
vue filters的使用详解
2018/06/11 Javascript
node中的cookie的具体使用
2018/09/13 Javascript
node.js中 mysql 增删改查操作及async,await处理实例分析
2020/02/11 Javascript
详解webpack的文件监听实现(热更新)
2020/09/11 Javascript
[02:40]DOTA2英雄基础教程 炼金术士
2013/12/23 DOTA
Python制作简单的网页爬虫
2015/11/22 Python
pandas读取csv文件提示不存在的解决方法及原因分析
2020/04/21 Python
python3.6使用SMTP协议发送邮件
2020/05/20 Python
python支持多继承吗
2020/06/19 Python
Html5+JS实现手机摇一摇功能
2015/04/24 HTML / CSS
英国高端食品和葡萄酒超市:Waitrose
2016/08/23 全球购物
金融专业大学生自我评价
2014/01/09 职场文书
优秀导游先进事迹材料
2014/01/25 职场文书
区优秀教师事迹材料
2014/02/10 职场文书
《莫泊桑拜师》教学反思
2014/04/23 职场文书
党委书记个人对照检查材料
2014/09/15 职场文书
超市开店计划书
2014/09/15 职场文书
国庆节演讲稿范文2014
2014/09/19 职场文书
2014年最新个人对照检查材料范文
2014/09/25 职场文书
公司股份转让协议书范本
2015/01/28 职场文书
2015年路政工作总结
2015/05/22 职场文书
单位车辆管理制度
2015/08/05 职场文书
Java实现多文件上传功能
2021/06/30 Java/Android
Python 实现Mac 屏幕截图详解
2021/10/05 Python