web-dev-qa-db-ja.com

opencvでBytesIOイメージをロードする

Io.BytesIO()構造からOPENCVで画像を読み込もうとしています。元々、コードは以下のようにPILを使用して画像をロードします。

image_stream = io.BytesIO()
image_stream.write(connection.read(image_len))
image_stream.seek(0)
image = Image.open(image_stream)
print('Image is %dx%d' % image.size)

私はそのようなOPENCVで開こうとしました:

image_stream = io.BytesIO()
image_stream.write(connection.read(image_len))
image_stream.seek(0)
img = cv2.imread(image_stream,0)
cv2.imshow('image',img)

しかし、imreadはBytesIO()を処理していないようです。エラーが発生します。

OPENCV3.3とPython 2.7を使用しています。誰か助けてくれませんか?

5
Henrique

Henriqueこれを試してください:

import numpy as np
import cv2 as cv
import io

image_stream = io.BytesIO()
image_stream.write(connection.read(image_len))
image_stream.seek(0)
file_bytes = np.asarray(bytearray(image_stream.read()), dtype=np.uint8)
img = cv.imdecode(file_bytes, cv.IMREAD_COLOR)
13
arrybn