私はウェブカメラのストリームからいくつかの顔認識を行うためのアプリケーションに取り組んでいます。私はキャンバスのデータのURIのbase64エンコードを取得し、このような何かにそれを使用したい:OpenCv Pythonライブラリを使用してメモリからベース64のエンコードされたイメージを読み取る
cv2.imshow('image',img)
URIはこのようなものに見えるデータ:だから
data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7
を、分かりやすくするために私が示されてきましたベース64の文字列が壊れていないようにイメージがどのように見えるか。
<img src="data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7">
official docはimread
は、引数としてファイルパスを受け入れること、言います。
import base64
imgdata = base64.b64decode(imgstring) #I use imgdata as this variable itself in references below
filename = 'some_image.jpg'
with open(filename, 'wb') as f:
f.write(imgdata)
上記のコードが動作すると、画像ファイルが正しく生成されます:私はのような何かをすればthisからSO、答えます。しかし、私はストリームのすべてのフレームでこれをやっていると考えると、多くのFile IO操作が実行可能であるとは思わない。私はimg
オブジェクトを直接作成してメモリにイメージを読み込むことができるようにしたい。
私はいくつかの人々のために働いているように見える2つのソリューションを試しました。 PIL referenceを使用して
:
pilImage = Image.open(StringIO(imgdata)) npImage = np.array(pilImage) matImage = cv.fromarray(npImage)
私はopenCV3が
cv2
モジュールとして私に提供されているインストールされているとして定義されていないcv
を取得します。私はimg = cv2.imdecode(npImage,0)
を試しましたが、何も返しません。デコードされた文字列からバイトを取得し、並べ替え
file_bytes = numpy.asarray(bytearray(imgdata), dtype=numpy.uint8) img = cv2.imdecode(file_bytes, 0) #Here as well I get returned nothing
imdecode
機能リターンを言及していません。しかし、私が遭遇したエラーから、最初の引数として
numpy array
または
scalar
があると思います。どのように私は
cv2.imshow('image',img)
とその後のすべての種類のクールなものを行うことができますように、メモリ内の画像上のハンドルを取得しますか?
私は自分自身を明確にすることができたと思う。
あなたはちょうどこのようCV2と枕の両方を使用することができます
Check [this](http://stackoverflow.com/a/33522724/5008845) – Miki
あなたのクイック返信@Mikiに感謝しますが、 'np.fromstring'もうまくいきません。 –
そして、 'imgstring'はイメージURLでしょうか? – Divakar