質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

5484閲覧

cv2で開いた画像をbase64にしたい

sk-sora--ypi

総合スコア530

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2020/11/04 09:14

前提・実現したいこと

cv2で画像処理を行ったものをbase64に変換したい

画像を保存せずにデータのやりとりをしたいため、
ウィンドウ側からbase64データを送信し、

python

1data = request.POST["image"]# data:image/jpeg;base64,***** 2string = data[data.find("base64")+7:] # **** 3img = imread(io.BytesIO(base64.b64decode(string)))# RGB 4image = cv2.cvtColor(img,cv2.COLOR_RGB2BGR)# cv2のBGR

という風にbase64からcv2に変換はできたのですが、そこから

python

1image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) 2ret,img_th = cv2.threshold(image_gray,0,255,cv2.THRESH_OTSU)

などとopencvの処理を施した画像をbase64に返したいです

補足情報(FW/ツールのバージョンなど)

python 3.7.3
cv2 4.2.0

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

[Python3] 画像をBase64にエンコード、Base64をNumPy配列へ読み込みOpenCVで処理、画像データをBase64に変換が参考になります。
cv2.imencodeが使えます。

Python

1import cv2 2import numpy as np 3import base64 4 5# テストデータ 6image = np.zeros((9,5,3), dtype=np.uint8) 7image[4,2] = [0,255,0] 8#cv2.imwrite('src.jpg', image) 9 10image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) 11ret,img_th = cv2.threshold(image_gray,0,255,cv2.THRESH_OTSU) 12 13ret, dst_data = cv2.imencode('.jpg', img_th) 14dst_str = base64.b64encode(dst_data) 15print(dst_str) 16# b'/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/wAALCAAJAAUBAREA/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/9oACAEBAAA/APwP1m28KwadpMvh7WdQurubT2fXYL3TEgjs7r7RMqxQOs0huYjbrbyGV1hYSSyx+WViWaXPr//Z'

投稿2020/11/04 09:44

can110

総合スコア38278

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sk-sora--ypi

2020/11/04 11:29

ありがとうございます! 試してみます。
sk-sora--ypi

2020/11/04 16:29

できるようになりました、ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問