我有一个包含数百张图片(.png格式)的.tar文件,需要通过opencv进行处理。
出于效率考虑,我想知道是否可以直接从内存流中读取与tar文件相关联的图片,而不必经过磁盘。
例如:
出于效率考虑,我想知道是否可以直接从内存流中读取与tar文件相关联的图片,而不必经过磁盘。
例如:
import tarfile
import cv2
tar0 = tarfile.open('mytar.tar')
im = cv2.imread( tar0.extractfile('fname.png').read() )
最后一行不起作用,因为imread
需要的是文件名而不是流。
请注意,可以通过这种方式直接从tar
流中读取文本(例如,请参见此SO问题)。
有什么建议可以用正确的png
编码打开流吗?
当然,将其解压到ramdisk中是一种选择,尽管我正在寻找更可缓存的解决方案。