opencv读取视频并保存图像的方法
作者:zhouxuechao 发布时间:2023-02-21 17:30:16
标签:opencv,读取,视频
问题重述
实习项目要做安全帽目标检测,拿到了公司给的一些视频数据,使用Opencv读取视频并每隔 1 s 1s 1s存储一副图像,下面是一些视频数据
实现步骤 添加依赖库
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()保存图像路径不能存在中文字符,否则无法保存,并且没有任何提示!!!
解决:改为英文路径即可。
最终结果
来源:https://blog.csdn.net/zhouxuechao/article/details/115221221
0
投稿
猜你喜欢
- imadjust简介imadjust是一个计算机函数,该函数用于调节灰度图像的亮度或彩 * 像的颜色矩阵。在matlab的命令窗口中键入: d
- 一、场景浏览器访问淘宝,再访问天猫,继续访问1688......此时,浏览器中的cookie是什么状态?显然,包含上述3个网站的所有cook
- 这是学习tensorflow框架中遇到的知识,这里定义函数的时候选用的是将x和y封装起来,方便tensorflow求导。要慢慢习惯这种写法i
- 前言:我们想要在爬虫中使用xpath、beautifulsoup、正则表达式,css选择器等来提取想要的数据,但是因为scrapy是一个比较
- 在互联网出现之前,“抄”很不方便,一是“源”少,而是发布渠道少;而在互联网出现之后,“抄”变得很简单,铺天盖地的“源”源源不断,发布渠道也数
- 本文实例讲述了Python3.5装饰器。分享给大家供大家参考,具体如下:#!/usr/bin/env python# -*- coding:
- 本文实例讲述了Python装饰器用法与知识点。分享给大家供大家参考,具体如下:(1)装饰器含参数,被装饰函数不含(含)参数实例代码如下:im
- 目录一、6个非常重要的str处理词二、重要的str处理 几乎所有的 数据类型里也都能用1、提取字符串中 特定位置的字符2、len 得到当前变
- sql="select * from admin where users='"&users&&q
- 在处理数据的时候,因为没有及时的去重,所以需要重新对生成txt进行去重。可是一个文件夹下有很多txt,总不可能一个一个去操作,这样效率太低了
- 复制代码 代码如下: public partial class CMS_DBDataContext { partial void OnCre
- 背景:之前写的接口测试一直没有支持无限嵌套对比key,上次testerhome逛论坛,有人分享了他的框架,看了一下,有些地方不合适我这边自己
- 环境搭建1.安装uwsgi、nginx和djangoapt install nginxpip install uwsgipip instal
- 问题当浏览SQL Server 2008的新特性时,我们看到了透明数据加密。这看起来很有趣。您能为我们解释一下并介绍下执行它的细节吗?专家解
- 原理:print() 函数会把内容放到内存中, 内存中的内容并不一定能够及时刷新显示到屏幕中(应该是要满足某个条件,这个条件现在还不清楚)。
- Matplotlib官网 如果想了解更多可查看官网。import numpy as np import matplotlib.py
- 在这篇文章中,我们将讨论mask R-CNN背后的一些理论,以及如何在PyTorch中使用预训练的mask R-CNN模型。1.语义分割、目
- 在MySQL中,如何实现Top N及M至N段的记录查询?我们可以利用MySQL中SELECT支持的一个子句——LIMIT——来完成这项功能。
- 现象:生产中心进行拷机任务下了300个任务,过了一阵时间后发现任务不再被调度起来,查看后台日志发现日志输出停在某个时间点。分析:1、首先确认
- 本文实例讲述了Python聚类算法之凝聚层次聚类。分享给大家供大家参考,具体如下:凝聚层次聚类:所谓凝聚的,指的是该算法初始时,将每个点作为