EnsekiTT Blog

EnsekiTTが書くブログです。

Python+OpenCVでWebカメラの画像を取り込んで処理して表示する話

こんにちは、えんせきです。
Python+OpenCVWebカメラの組み合わせってなんだかんだで色々できるのでそのへんの出入り口をまとめておく。

つまりなにしたの?

OpenCVWebカメラの画像を取り込んで、処理して、処理結果を表示する。
f:id:ensekitt:20171220012509g:plain
ここでは左上に読み込んだ生フレーム画像、右下に文字を重畳したフレーム画像を表示している。

どんな実装?

  • OpenCVWebカメラの画像を取り込む
  • 取り込んだフレームに対して処理をする
  • 元データと処理済のデータを表示する

OpenCVのインストール(MacOS+pip)

OpenCVPythonをインストールする

pip install opencv-python

インストールできているか確認する

pip freeze | grep opencv
opencv-python==3.3.0.10

ここは一例。

実行確認(Python3系でやった)

>>> import cv2
>>> cv2.__version__
'3.3.0'

コード

# OpenCV のインポート
import cv2

# VideoCaptureのインスタンスを作成する。
# 引数でカメラを選べれる。
cap = cv2.VideoCapture(0)

while True:
    # VideoCaptureから1フレーム読み込む
    ret, frame = cap.read()

    # スクリーンショットを撮りたい関係で1/4サイズに縮小
    frame = cv2.resize(frame, (int(frame.shape[1]/4), int(frame.shape[0]/4)))
    # 加工なし画像を表示する
    cv2.imshow('Raw Frame', frame)

    # 何か処理(ここでは文字列「hogehoge」を表示する)
    edframe = frame
    cv2.putText(edframe, 'hogehoge', (0,50), cv2.FONT_HERSHEY_PLAIN, 3, (0, 255,0), 3, cv2.LINE_AA)

    # 加工済の画像を表示する
    cv2.imshow('Edited Frame', edframe)

    # キー入力を1ms待って、k が27(ESC)だったらBreakする
    k = cv2.waitKey(1)
    if k == 27:
        break

# キャプチャをリリースして、ウィンドウをすべて閉じる
cap.release()
cv2.destroyAllWindows()

f:id:ensekitt:20171220012910p:plain

クリエイティブ・コモンズ・ライセンス
この 作品 は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。