python 读图片 读文件封装

python 读图片封装 支持 视频,图片文件夹,图片

2024.02.01更新

安装依赖项:pip install natsort

#-*-coding:utf-8-*-
import os.path
from natsort import natsorted
import cv2class ImgReader:def __init__(self, source, suffix='mp4'):self.suffix = suffixif suffix!='mp4':self.type = 'file'if os.path.isdir(source):img_files = ['%s/%s' % (i[0].replace("\\", "/"), j) for i in os.walk(source) for j in i[-1] if j.endswith((type))]self.img_files = natsorted(img_files)self.img_index = 0self.type = 'dir'self.total_frames = len(self.img_files)elif source.endswith(".mp4"):self.type = 'mp4'self.cap = cv2.VideoCapture(source)if not self.cap.isOpened():raise ValueError(f"Error: Could not open video file at {source}")self.fps=int(self.cap.get(cv2.CAP_PROP_FPS)) + 5self.total_frames = int(self.cap.get(cv2.CAP_PROP_FRAME_COUNT))elif os.path.isfile(source):self.type = 'img'elif os.path.isdir(source):img_files = ['%s/%s' % (i[0].replace("\\", "/"), j) for i in os.walk(source) for j in i[-1] if j.endswith(('jpg', 'png', 'jpeg', 'JPG'))]self.img_files= natsorted(img_files)self.img_index = 0self.type = 'dir_img'self.total_frames = len(self.img_files)self.source = sourcedef get_filename(self):if self.suffix != 'mp4':if self.type == 'dir':if self.img_index < 0 or self.img_index >= len(self.img_files):return None,None,Noneimg_file = self.img_files[self.img_index]self.img_index += 1return img_file, self.img_index, img_fileelse:if self.img_index==1:return None,None,Noneself.img_index += 1return self.source, 0, Nonedef get_img(self):if self.type == 'mp4':ret, frame = self.cap.read()if not ret:self.cap.release()return None,None,Noneself.img_index += 1return frame,self.img_index,Noneelif self.type == 'img':return cv2.imread(self.source),0,Noneelif self.type == 'dir_img':if self.img_index < 0 or self.img_index >= len(self.img_files):return None,None,Noneimg_file = self.img_files[self.img_index]img = cv2.imread(img_file)self.img_index+=1return img,self.img_index,img_fileelse:return None,None,None

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/663648.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

帮管客CRM 文件上传漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

TCP/IP详细介绍以及TCP/IP寻址

目录 ​编辑 1. TCP/IP 介绍 2. 计算机通信协议&#xff08;Computer Communication Protocol&#xff09; 3. 什么是 TCP/IP&#xff1f; 4. 在 TCP/IP 内部 5. TCP 使用固定的连接 6. IP 是无连接的 7. IP 路由器 8. TCP/IP 9. TCP/IP 寻址 10. IP地址 …

谷歌产品大更新:Bard可生成图像;文生音乐平台等5大免费功能

2月2日&#xff0c;谷歌在官网对生成式AI产品进行了大更新&#xff0c;包括类ChatGPT聊天助手Bard可以通过文本提示生成图像&#xff1b; 全新的文生音乐平台MusicFX&#xff1b;新的文生图像平台ImageFX&#xff1b;新的文本扩写平台TextFX&#xff1b;在谷歌地图中增加生成式…

MATLAB矩阵的操作(第二部分)

师从清风 矩阵的创建方法 在MATLAB中&#xff0c;矩阵的创建方法主要有三种&#xff0c;分别是&#xff1a;直接输入法、函数创建法和导入本地文件中的数据。 直接输入法 输入矩阵时要以中括号“[ ]”作为标识符号&#xff0c;矩阵的所有元素必须都在中括号内。 矩阵的同行元…

P1967 [NOIP2013 提高组] 货车运输

[NOIP2013 提高组] 货车运输 题目背景 NOIP2013 提高组 D1T3 题目描述 A 国有 n n n 座城市&#xff0c;编号从 1 1 1 到 n n n&#xff0c;城市之间有 m m m 条双向道路。每一条道路对车辆都有重量限制&#xff0c;简称限重。 现在有 q q q 辆货车在运输货物&#x…

UnitySahder实现Phong/BlinnPhong模型

目录 Phong模型公式&#xff1a; BlinnPhong模型公式&#xff1a; 实现&#xff1a; Phong模型&#xff1a; BlinnPhong模型&#xff1a; Phong模型公式&#xff1a; 结果自发光&#xff0b;环境光漫反射高光反射 BlinnPhong模型公式&#xff1a; 对Phong模型的简单修改&…

M1芯片MAC 安装MySQL、Nacos遇到的问题

摘要&#xff1a;由于电脑上是M1芯片&#xff0c;安装软件时遇到一系列问题&#xff0c;记录下踩的坑&#xff01;&#xff01;&#xff01; 安装MySQL MySQl官网下载链接区分ARM和X86架构&#xff0c;终端输入uname -a指令&#xff0c;本机显示为ARM czhczhdeiMac ~ % uname…

Git―基本操作

Git ⛅认识 Git⛅安装 GitCentos(7.6)Ubuntu ⛅Git―基本操作创建本地仓库&#x1f342;配置本地仓库&#x1f342;工作区, 暂存区, 版本库&#x1f342;版本库工作区 添加文件&#x1f342;查看文件&#x1f342;修改文件&#x1f342;版本回退&#x1f342;☃️案例 撤销修改…

【华为OD机试】 最富裕的小家庭【2024 C卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 在一颗树中,每个节点代表一个家庭成员,节点的数字表示其个人的财富值, 一个节点及其直接相连的子节点被定义为一个小家庭。 现给你一颗树,请计算出最富裕的小家庭的财富和。 输入描述 …

k8s中cert-manager管理https证书

前言 目前https是刚需,但证书又很贵,虽然阿里云有免费的,但没有泛域名证书,每有一个子域名就要申请一个证书,有效期1年,1年一到全都的更换,太麻烦了。经过搜索,发现了自动更新证书神器cert-manager;当然cert-manager是基于k8s的。 安装采用Helm方式 Chart地址: ht…

THREE.JS动态场景开发实战【赛博朋克】

在本教程中&#xff0c;我们将探索如何创建类似 Three.js 的赛博朋克场景&#xff0c;灵感来自 Pipe 网站上的背景动画。 我们将指导你完成使用 Three.js 编码动态场景的过程&#xff0c;包括后处理效果和动态光照&#xff0c;所有这些都不需要任何着色器专业知识。 我用这个场…

python tqdm进度条详解

文章目录 1. 语法1.1 tqdm 参数1.2 bar_format案例 2. 基本用法2.1 指定可迭代对象2.2 指定迭代次数2.3 设置显示信息2.3.1 设置进度条前缀(左侧)信息2.3.2 显示进度条后缀(右侧)信息 3. 项目案例参考 tqdm 是 Python 进度条库&#xff0c;可以在 Python 长循环中添加一个进度提…

学术写作|第二篇论文写作记录|GPT4论文润色Prompt

本文目录 写作时间安排如何写出初稿?找谁修改?1. 找AI修改2. 找师姐、师兄、老师、同行/外行修改论文修改意见集锦(反复观看)最好用的GPT4指令禁止转载,未经允许的任何引用。 写作时间安排 第二篇工作的idea去年就想出来了,一直被其他事情干扰,错过了N个会议… 在寒假…

西瓜书学习笔记——k近邻学习(公式推导+举例应用)

文章目录 算法介绍实验分析 算法介绍 K最近邻&#xff08;K-Nearest Neighbors&#xff0c;KNN&#xff09;是一种常用的监督学习算法&#xff0c;用于分类和回归任务。该算法基于一个简单的思想&#xff1a;如果一个样本在特征空间中的 k k k个最近邻居中的大多数属于某个类别…

vue+element 换肤功能

1.首先建深色和浅色两个主题样式变量样式表&#xff0c;样式表名和按钮中传入的值一样&#xff0c;本例中起名为default.scss和dark.scss 2.在data中定义主题变量名 zTheme:‘defalut’&#xff0c;默认引用defalut.scss, 在点击按钮时切换引用的样式表&#xff0c;达到换肤效果…

结合实例谈谈SPSS多元线性回归分析结果解读与报告撰写

为研究某地区房地产市场的价格与相关影响因素之间的关系&#xff0c;现从该地区采集了 20 份样本&#xff0c;数据如下表&#xff0c;请给出销售价格与相关影响因素之间的函数表达式&#xff0c;并从统计学角度分析这些因素之间的关系&#xff0c;最后预测 X 小区的平均销售价格…

【洛谷学习自留】p1055 ISBN 号码

解题思路&#xff1a; 1.首先考虑怎么分解字符串的问题&#xff0c;把字符串内的数字拿出来&#xff0c;这里我使用了String的toCharArray方法&#xff0c;将字符串内的所有字符拿出来&#xff0c;然后针对性的把所有数字轮流用于计算&#xff0c;因为数组内的数字是以字符的形…

中小学电子编程内部集中培训第三课

蜂鸣器学习 可视化代码 见链接&#xff1a; 利用小车写蜂鸣器

VMware:在部分链上无法执行所调用的函数,请打开父虚拟磁

VMware:在部分链上无法执行所调用的函数&#xff0c;请打开父虚拟磁 问题&#xff1a;VMware给虚拟机扩展硬盘容量&#xff0c;提示&#xff1a;在部分链上无法执行所调用的函数&#xff0c;请打开父虚拟磁。原因&#xff1a;是因为你的虚拟磁盘文件是分多个文件存储的&#xf…

北朝隋唐文物展亮相广西,文物预防性保护网关保驾护航

一、霸府名都——太原博物馆收藏北朝隋朝文物展 2月1日&#xff0c;广西民族博物馆与太原博物馆携手&#xff0c;盛大开启“霸府名都——太原博物馆北朝隋文物展”。此次新春展览精选了北朝隋唐时期150多件晋阳文物珍品。依据“巍巍雄镇”“惊世古冢”“锦绣名都”三个单元&am…