gpt4 book ai didi

Python - 使用 OpenCV 将字节图像转换为 NumPy 数组

转载 作者:太空宇宙 更新时间:2023-11-03 20:42:57 24 4
gpt4 key购买 nike

我有一个以字节为单位的图像:

打印(图像字节)

b'\xff\xd8\xff\xfe\x00\x10Lavc57.64.101\x00\xff\xdb\x00C\x00\x08\x04\x04\x04\x04\x04\x05\x05\x05\x05\x05\x05\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x07\x07\x07\x08\x08\x08\x07\x07\x07\x06\x06\x07\x07\x08\x08\x08\x08\t\t\t\x08\x08\x08\x08\t\t\n\n\n\x0c\x0c\x0b\x0b\x0e\x0e\x0e\x11\x11\x14\xff\xc4\x01\xa2\x00\x00\x01\x05\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x01\x00\x03\x01\x01\x01\x01\x01\x01\x01\x01\x01\x00\x00\... 一些其他的东西

我可以使用 Pillow 将其转换为 NumPy 数组:

image = numpy.array(Image.open(io.BytesIO(image_bytes))) 

但我不太喜欢使用 Pillow。有没有办法使用清晰的 OpenCV,或者直接使用 NumPy 甚至更好,或者其他一些更快的库?

最佳答案

我创建了一个 2x2 JPEG image来测试这个。该图像具有白色、红色、绿色和紫色像素。我用了cv2.imdecodenumpy.frombuffer

import cv2
import numpy as np

f = open('image.jpg', 'rb')
image_bytes = f.read() # b'\xff\xd8\xff\xe0\x00\x10...'

decoded = cv2.imdecode(np.frombuffer(image_bytes, np.uint8), -1)

print('OpenCV:\n', decoded)

# your Pillow code
import io
from PIL import Image
image = np.array(Image.open(io.BytesIO(image_bytes)))
print('PIL:\n', image)

这似乎可行,尽管 channel 顺序是 BGR 而不是 PIL.Image 中的 RGB。您可能会使用一些标志来调整它。测试结果:

OpenCV:
[[[255 254 255]
[ 0 0 254]]

[[ 1 255 0]
[254 0 255]]]
PIL:
[[[255 254 255]
[254 0 0]]

[[ 0 255 1]
[255 0 254]]]

关于Python - 使用 OpenCV 将字节图像转换为 NumPy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49511753/

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