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删除空文件和空文件夹的方法
Jul 14 Python
Python字典数据对象拆分的简单实现方法
Dec 05 Python
python unittest实现api自动化测试
Apr 04 Python
Python爬虫信息输入及页面的切换方法
May 11 Python
修改python plot折线图的坐标轴刻度方法
Dec 13 Python
对pandas写入读取h5文件的方法详解
Dec 28 Python
django的settings中设置中文支持的实现
Apr 28 Python
使用Python做定时任务及时了解互联网动态
May 15 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
Aug 30 Python
pytorch 模拟关系拟合——回归实例
Jan 14 Python
python使用for...else跳出双层嵌套循环的方法实例
May 17 Python
详解pandas.DataFrame.plot() 画图函数
Jun 14 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
php在线打包程序源码
2008/07/27 PHP
探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法
2013/06/06 PHP
php读取二进制流(C语言结构体struct数据文件)的深入解析
2013/06/13 PHP
yii2.0数据库迁移教程【多个数据库同时同步数据】
2016/10/08 PHP
php封装的smarty类完整实例
2016/10/19 PHP
php实现的简单数据库操作Model类
2016/11/16 PHP
workerman结合laravel开发在线聊天应用的示例代码
2018/10/30 PHP
HTML中事件触发列表与解说
2007/07/09 Javascript
定义select的边框颜色
2008/04/28 Javascript
jQuery多级弹出菜单插件ZoneMenu
2014/12/18 Javascript
JS在一定时间内跳转页面及各种刷新页面的实现方法
2016/05/26 Javascript
jQuery实现大图轮播
2017/02/13 Javascript
走进AngularJs之过滤器(filter)详解
2017/02/17 Javascript
原生javascript移动端滑动banner效果
2017/03/10 Javascript
Angular排序实例详解
2017/06/28 Javascript
ReactNative踩坑之配置调试端口的解决方法
2017/07/28 Javascript
vue+axios新手实践实现登陆的示例代码
2018/06/06 Javascript
element-ui中的select下拉列表设置默认值方法
2018/08/24 Javascript
Vue.js实现大转盘抽奖总结及实现思路
2019/10/09 Javascript
js实现适配移动端的拖动效果
2020/01/13 Javascript
vue-cli4.0多环境配置变量与模式详解
2020/12/30 Vue.js
Python多进程编程技术实例分析
2014/09/16 Python
Python实现以时间换空间的缓存替换算法
2016/02/19 Python
使用Python来开发微信功能
2018/06/13 Python
python读写配置文件操作示例
2019/07/03 Python
在Tensorflow中查看权重的实现
2020/01/24 Python
python自动下载图片的方法示例
2020/03/25 Python
pycharm下pyqt4安装及环境配置的教程
2020/04/24 Python
Python pip install如何修改默认下载路径
2020/04/29 Python
Python正则re模块使用步骤及原理解析
2020/08/18 Python
纽约JewelryAffairs珠宝店:精细金银时尚首饰
2017/02/05 全球购物
波兰品牌鞋履在线商店:Eastend.pl
2020/01/11 全球购物
单位创先争优活动方案
2014/01/26 职场文书
预备党员公开承诺书
2014/05/28 职场文书
毕业生班级鉴定评语
2015/01/04 职场文书
《社戏》教学反思
2016/02/22 职场文书