zipfile_path = '/home/liheng/ADAS_Video/myzip.zip' with zipfile.ZipFile(zipfile_path, mode='r') as zfile: # 只读方式打开压缩包 nWaitTime = 1 for name in zfile.namelist(): # 获取zip文档内所有文件的名称列表 if '.jpg' not in name:# 仅读取.jpg图片,过滤掉文件夹,及其他非.jpg后缀文件 continue print(name) with zfile.open(name,mode='r') as image_file: content = image_file.read() # 一次性读入整张图片信息 image = np.asarray(bytearray(content), dtype='uint8') image = cv2.imdecode(image, cv2.IMREAD_COLOR) cv2.imshow('image', image) key = cv2.waitKey(nWaitTime) if 27 == key: # ESC break elif 32 == key: # space nWaitTime = not nWaitTime zfile.close()

压缩包内容如下:
zip压缩包示例

这个过程分为两步进行:1)读取压缩包及压缩包中的文件;2)将读取的文件恢复为图像。主要采用了 zipfile 模块以及 opencv imdecode 函数。

读取压缩包可以采用python的 zipfile 模块进行。通过 zipfile.ZipFile() 以只读方式打开指定的压缩包;随后,利用 zfile.namelist() 获取压缩包内可解压的所有文件列表名称,该函数不仅返回有文件,同时也有文件夹,由于我只需要获取 .jpg 后缀的图片文件,因此需要进行一次过滤处理;最后,根据文件名, zfile.open() 打开文件, image_file.read() 一次性读入文件所有内容到内存中。如果读取的是一个 .txt 文本文件,也可以采用 readline() readlines() 函数读取一行或者读取所有行文件内容进行解析,同时,也可以指定编码格式进行转换。

从内存中恢复图像信息,主要采用 cv2.imdecode() 函数,该函数一般和 cv2.imencode() 配套使用,用于网络图片传输,在我之前的ADAS控制模块中,视频的传输就利用到了这两个函数,之前已有过介绍。当然,此处我仅利用图片解码函数: cv2.imdecode() ,在转换前,需要利用 numpy np.asarray 将数据转换为 uint8 格式(0-255之间)

cv2.imdecode() 函数从指定的内存缓存中读取数据,并把数据转换(解码)成图像格式;主要用于从网络传输数据中恢复出图像。

cv2.imencode() 函数是将图片格式转换(编码)成流数据,赋值到内存缓存中;主要用于图像数据格式的压缩,方便网络传输。

对于包含大量 图片 的大型 zip 文件而言, 解压 非常费时间,同时 解压 过程也会需要更大的硬盘空间。这个时候,如果 Python 能直接 读取 zip 中的 图片 的话,就非常有用了。 本文提供PIL和cv2两种格式的 图片 读取 。代码为本人原创,有问题可留言交流~ 这里用到的包是 zip file。假设有个 zip 文件叫“demo. zip ”,其中包含"sing.jpg"、“dance.jpg”、"rap.jpg"和"basketball.jpg"四张 图片 。 from zip file import Zip File from io impo 清华科技大讲堂免费直播课预告:免费直播课| Python 数据可视化与科学计算可视化案例分享,5月28日晚20:00-21:30============哔哩哔哩网站免费视频观看地址:董老师在... 开学第一课:一定不要这样问老师 Python 问题董付国老师 Python 系列教材推荐与选用参考3000道 Python 习题免费在线练习================推荐教材:《 Python 程序设计(第3版)》,(ISBN:978-7-302-55083-9),董付国,清华大学出版社,2020年6月出版,2022年12月第14次印刷(本书第1版印刷1次,第2版印刷17次,已退出历史舞台),山东省一流本科... zip file可以很方便地 读取 、写入、提取 zip 文件。如果在日常工作中经常需要将某些文件打包到 zip ,不妨试试用它实现一定程度的自动化办公。另外 Python Zip imports 也是一个有趣的话题:从 zip 文件中 import 已经预先编译好的包或模块(.pyc文件)。 §01 压缩文件 为了方便存储于交换文件,很多的数据文件通常以打包压缩的方式进行存储和传送。可以直接使用很多OS中的压缩打包程序完成压缩文件的打包压缩和 解压 过程。如何在 Python 下对于这些压缩文件进行存储呢? zip file操作压缩文件 根据 【 python 】详解 zip file模块 读取 处理压缩文件实例 介绍 zip file模块 读取 压缩文件的实际操作。 zip file是 python 里用来做 zip 格式编码的压缩和 解压 缩的,由于是很常见的 zip 格式,所以这个模块使用频率也是比较高的。 zip fi ZIP 文件即 压缩包 python zip file模块可以很容易地实现 ZIP 文件的 读取 解压 和创建。 目录 读取 解压 创建 使用前需要导入 zip file模块。 import zip file 首先,通过 zip file. Zip File()函数,创建 Zip File对象。 f = zip file. Zip File('filename. zip ') 接下来,可以通过namelist()方法获取 压缩包 中的所有文件和文件夹名称列表。 f.namelist() 压缩包 中的文件可以通过getinfo()方法传递给特定文件的