如何使用PIL和python-opencv从内存字节码提取图片并转换为np.array?

2026-06-09 12:124阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计314个文字,预计阅读时间需要2分钟。

如何使用PIL和python-opencv从内存字节码提取图片并转换为np.array?

python将RGB格式的图片以字节数据形式读取到内存中,然后使用PIL和CV2进行读写操作,最终转换为np.array格式。

如何使用PIL和python-opencv从内存字节码提取图片并转换为np.array?

代码如下:

pythonfrom PIL import Imageimport cv2import numpy as npfrom io import BytesIO

假设f_path是图片的路径f_path='/path/to/image.jpg'

读取图片with open(f_path, 'rb') as f: image_data=f.read()

使用PIL读取图片image=Image.open(BytesIO(image_data))

将PIL图片转换为np.arraynp_image=np.array(image)

使用CV2读取图片cv2_image=cv2.imread(f_path)

将CV2图片转换为np.arraycv2_np_image=np.array(cv2_image)

输出结果,验证转换是否成功print(PIL to np.array:)print(np_image.shape)print(CV2 to np.array:)print(cv2_np_image.shape)

请注意,上述代码中的`f_path`需要替换为实际图片的路径。此外,由于图片的格式可能不同,转换后的np.array的形状也可能不同。

把某个RGB格式的图片以字节码的形式读入到内存中,然后使用PIL 和 CV2 来进行读写,并转成np.array 格式。

代码:

from PIL import Image
import cv2
import numpy as np

from io import BytesIO


f_path = '/home/devil/x.JPEG'

img = Image.open(f_path)
img_array = np.array(img.convert('RGB'))


f_bytes = open(f_path, 'rb').read()


img_array2 = Image.open(BytesIO(f_bytes))
img_array2 = np.asarray(img_array2, np.uint8)


# f_array_bytes = np.asarray(bytearray(f_bytes),np.uint8)
f_array_bytes = np.frombuffer(f_bytes, np.uint8)
img_array3 = cv2.cvtColor(cv2.imdecode(f_array_bytes, cv2.IMREAD_COLOR), cv2.COLOR_BGR2RGB)


print(np.all(img_array==img_array2))
print(np.all(img_array==img_array3))


本文共计314个文字,预计阅读时间需要2分钟。

如何使用PIL和python-opencv从内存字节码提取图片并转换为np.array?

python将RGB格式的图片以字节数据形式读取到内存中,然后使用PIL和CV2进行读写操作,最终转换为np.array格式。

如何使用PIL和python-opencv从内存字节码提取图片并转换为np.array?

代码如下:

pythonfrom PIL import Imageimport cv2import numpy as npfrom io import BytesIO

假设f_path是图片的路径f_path='/path/to/image.jpg'

读取图片with open(f_path, 'rb') as f: image_data=f.read()

使用PIL读取图片image=Image.open(BytesIO(image_data))

将PIL图片转换为np.arraynp_image=np.array(image)

使用CV2读取图片cv2_image=cv2.imread(f_path)

将CV2图片转换为np.arraycv2_np_image=np.array(cv2_image)

输出结果,验证转换是否成功print(PIL to np.array:)print(np_image.shape)print(CV2 to np.array:)print(cv2_np_image.shape)

请注意,上述代码中的`f_path`需要替换为实际图片的路径。此外,由于图片的格式可能不同,转换后的np.array的形状也可能不同。

把某个RGB格式的图片以字节码的形式读入到内存中,然后使用PIL 和 CV2 来进行读写,并转成np.array 格式。

代码:

from PIL import Image
import cv2
import numpy as np

from io import BytesIO


f_path = '/home/devil/x.JPEG'

img = Image.open(f_path)
img_array = np.array(img.convert('RGB'))


f_bytes = open(f_path, 'rb').read()


img_array2 = Image.open(BytesIO(f_bytes))
img_array2 = np.asarray(img_array2, np.uint8)


# f_array_bytes = np.asarray(bytearray(f_bytes),np.uint8)
f_array_bytes = np.frombuffer(f_bytes, np.uint8)
img_array3 = cv2.cvtColor(cv2.imdecode(f_array_bytes, cv2.IMREAD_COLOR), cv2.COLOR_BGR2RGB)


print(np.all(img_array==img_array2))
print(np.all(img_array==img_array3))