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实现二维数组按照某行或列排序的方法【numpy lexsort】
Sep 22 Python
Python操作MySQL数据库的方法
Jun 20 Python
python3解析库BeautifulSoup4的安装配置与基本用法
Jun 26 Python
python 循环读取txt文档 并转换成csv的方法
Oct 26 Python
使用Py2Exe for Python3创建自己的exe程序示例
Oct 31 Python
python利用百度AI实现文字识别功能
Nov 27 Python
解决python线程卡死的问题
Feb 18 Python
Python字典遍历操作实例小结
Mar 05 Python
Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析
Aug 13 Python
Django中ajax发送post请求 报403错误CSRF验证失败解决方案
Aug 13 Python
python3中替换python2中cmp函数的实现
Aug 20 Python
python3.8.1+selenium实现登录滑块验证功能
May 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
第十二节 类的自动加载 [12]
2006/10/09 PHP
PHP输出控制功能在简繁体转换中的应用
2006/10/09 PHP
PHP乱码问题,UTF-8乱码常见问题小结
2012/04/09 PHP
解析php防止form重复提交的方法
2013/07/01 PHP
php实现的替换敏感字符串类实例
2014/09/22 PHP
linux中cd命令使用详解
2015/01/08 PHP
php动态添加url查询参数的方法
2015/04/14 PHP
PHP实现的防止跨站和xss攻击代码【来自阿里云】
2018/01/29 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
Laravel 5.1 框架Blade模板引擎用法实例分析
2020/01/04 PHP
javascript 模拟点击广告
2010/01/02 Javascript
基于jquery的关于动态创建DOM元素的问题
2010/12/24 Javascript
jquery mobile事件多次绑定示例代码
2013/09/13 Javascript
JavaScript判断文件上传类型的方法
2014/09/02 Javascript
jquery向上向下取整适合分页查询
2014/09/06 Javascript
js实现的二级横向菜单条实例
2015/08/22 Javascript
JS实现仿Windows经典风格的选项卡Tab切换代码
2015/10/20 Javascript
AngularJS入门教程之双向绑定详解
2016/08/18 Javascript
javascript计算对象长度的方法
2017/10/25 Javascript
js实现数字滚动特效
2019/12/16 Javascript
OpenLayers3实现对地图的基本操作
2020/09/28 Javascript
python中cPickle用法例子分享
2014/01/03 Python
Python中一些自然语言工具的使用的入门教程
2015/04/13 Python
在pandas多重索引multiIndex中选定指定索引的行方法
2018/11/16 Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
2019/07/06 Python
Python SQLAlchemy入门教程(基本用法)
2019/11/11 Python
详解CSS3的perspective属性设置3D变换距离的方法
2016/05/23 HTML / CSS
HTML5拖拽文件上传的示例代码
2021/03/04 HTML / CSS
Wilson体育用品官网:美国著名运动器材品牌
2019/05/12 全球购物
儿科护士实习自我鉴定
2013/10/17 职场文书
计算机网络及管理学专业求职信
2014/06/05 职场文书
机电一体化专业毕业生自荐信
2014/06/19 职场文书
法制宣传标语
2014/06/23 职场文书
领导干部群众路线对照检查材料
2014/11/05 职场文书
青年联谊会致辞
2015/07/31 职场文书
立秋之描写立秋的作文(五年级)
2019/08/08 职场文书