gpt4 book ai didi

python - 将内存中的 OpenCV 图像写入 BytesIO 或 Tempfile

转载 作者:太空宇宙 更新时间:2023-11-03 21:59:11 27 4
gpt4 key购买 nike

我需要将位于内存中的 OpenCV 图像写入 BytesIO 或 Tempfile 对象,以便在其他地方使用。

我担心这是一个死胡同的问题,因为 cv2.imwrite()将文件名作为参数,然后使用文件扩展名推断要写入的图像类型( .jpg.png.tiff 等)。 cv2.imwrite()这是在 C++ 级别执行的,所以我担心没有办法成功地将非文件名对象传递给它。

另一种可能的解决方案是转换为 PIL通过numpy ,它有能力写入 BytesIOTempfile对象,但我想避免不必要的副本。

最佳答案

cv2.imencode 可以帮助您:

import numpy as np
import cv2
import io

img = np.ones((100, 100), np.uint8)

# encode
is_success, buffer = cv2.imencode(".jpg", img)
io_buf = io.BytesIO(buffer)

# decode
decode_img = cv2.imdecode(np.frombuffer(io_buf.getbuffer(), np.uint8), -1)

print(np.allclose(img, decode_img)) # True

关于python - 将内存中的 OpenCV 图像写入 BytesIO 或 Tempfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52865771/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com