Python:SpooledTemporaryFile后缀不起作用

时间:2019-07-31 07:45:47

标签: python opencv temporary-files

我想使用opencv将图像写入临时文件,获取该临时文件的路径并将该路径传递给函数。

import cv2 as cv
from tempfile import NamedTemporaryFile, SpooledTemporaryFile

img = create_my_awesome_image()

with NamedTemporaryFile(suffix=".png") as temp:
    print(temp.name)
    cv.imwrite(temp.name, img) # this one sparks joy

with SpooledTemporaryFile(max_size=1000000, suffix=".png") as temp:
    print(temp.name)
    cv.imwrite(temp.name, img) # this one does not

第一张照片打印C:\Users\FLORIA~1\AppData\Local\Temp\tmpl2i6nc47.png
打印第二张照片时:None

使用NamedTemporaryFile可以完美地找到。但是,由于第二张打印不打印任何内容,因此无法将SpooledTemporaryFile与opencv一起使用。有什么想法会忽略SpooledTemporaryFile的prefix参数吗?

1 个答案:

答案 0 :(得分:1)

问题是磁盘上没有假脱机文件(例如SpooledTemporaryFile),因此它也没有名称。

但是,请注意cv2.imread()将以文件名作为参数,这意味着它将处理文件的打开并且不支持假脱机文件。

如果您仅使用png图像,则不会对其进行编码,这意味着变量img已在内存中包含图像数据,您无需执行其他任何操作,只需调用{ {1}}要保存到磁盘上时。如果要使用临时文件,则必须为cv2.imwrite()

如果要处理内存中的编码图像格式,例如NamedTemporaryFile,则可以像在this answer中那样使用jpg