web-dev-qa-db-ja.com

pythonからの要求を使用してOpenCVを使用してURLから画像を開く方法

私はそれらを後者に扱う必要があるので、PythonでOpenCVを使って大量の画像を開こうとしています。

実際には、このような枕でこの目標を達成することができます:

url = r'https://i.imgur.com/DrjBucJ.png'
response = requests.get(url, stream=True).raw
guess = Image.open(response).resize(size)

Pythonからライブラリrequestsを使用しています。

responseは次のようになります。b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x01\xdb\...

そして私が間違っていないならば、それらはURLのイメージからのピクセルの値です、正しい?

私の質問は:OpenCVでどのように同じことをすることができますか?

私はそれを試してみました:

resp = requests.get(url)
image = np.asarray(bytearray(resp.read()), dtype="uint8")
image = cv2.imdecode(image, cv2.IMREAD_COLOR)

そして私はこのエラーを得る:

image = np.asarray(bytearray(resp.read()), dtype="uint8")
AttributeError: 'Response' object has no attribute 'read'

私はこのウェブからのコードを得ました: https://www.pyimagessearch.com/2015/03/02/convert-url-to-image-with-python-and-opencv/

4
Azazel

@ Mohamed Saeed 答えはあなたの問題を解決しました。以下はURLからイメージを取得するための代替解決策です。

import cv2
import numpy as np
from urllib.request import urlopen

req = urlopen('https://i.imgur.com/DrjBucJ.png')
image = np.asarray(bytearray(req.read()), dtype=np.uint8)
image = cv2.imdecode(image, -1) 

cv2.imshow('image',image)
cv2.waitKey(0)
cv2.destroyAllWindows()
 _
0
Anubhav Singh