以下の内容はhttps://ensekitt.hatenablog.com/entry/2018/06/25/200000より取得しました。


Webから引っ張ってきた画像をOpenCVで処理して表示する話

つまりなにしたの?

imreadでローカルの画像を読み込むことはできるけど、Webから引っ張ってきた画像は
保存したりなんなりとめんどくさいのでimread_webを作った。

f:id:ensekitt:20180716213340j:plain

環境について

 % python --version
Python 3.6.4
 % pip freeze | grep opencv
opencv-contrib-python==3.4.0.12
opencv-python==3.4.0.12
 % pip freeze | grep matplot
matplotlib==2.1.2

大まかな手順

  • Requestで画像をとってくる
  • tempfileで保存する
  • OpenCVで読み込む
  • 表示なり保存なりする

tempfileは処理中だけ保存してくれる便利なやつ
11.6. tempfile — 一時ファイルやディレクトリの作成 — Python 3.6.5 ドキュメント

コード

import io
import tempfile
import requests
import cv2
from matplotlib import pyplot as plt

def imread_web(url):
    # 画像をリクエストする
    res = requests.get(url)
    img = None
    # Tempfileを作成して即読み込む
    with tempfile.NamedTemporaryFile(dir='./') as fp:
        fp.write(res.content)
        fp.file.seek(0)
        img = cv2.imread(fp.name)
    return img

if __name__ == "__main__":
    url = 'https://s3.amazonaws.com/ensekitt-public/IEKEI.JPG'
    raw_img = imread_web(url)
    # BGRで読み込んじゃうのでMatplotlibで表示するために
    raw_img = cv2.cvtColor(raw_img, cv2.COLOR_BGR2RGB)
    # OpenCV的な処理をするところ
    edited_img = cv2.putText(raw_img, 'Umai IEKEI', (0,50), cv2.FONT_HERSHEY_PLAIN, 3, (0, 255,0), 3, cv2.LINE_AA)

    plt.imshow(edited_img)
    plt.show()

f:id:ensekitt:20180716213044p:plain
ぼくの好きな家系ラーメンにUmai IEKEIとOpenCVを使って書くことができました。




以上の内容はhttps://ensekitt.hatenablog.com/entry/2018/06/25/200000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14