トップページ -> Pythonによる視線検出について -> OpenCVによるカメラ映像のリアルタイム描画

OpenCVによるカメラ映像のリアルタイム描画

リアルタイムに視線を検出するために,まずはカメラ映像を受け取るところから始めます. 今回はOpenCVを使用してカメラ映像をリアルタイムに描画する方法を紹介します. PCに内蔵カメラが付いていない場合はスマートフォンをWebカメラとして使用することができます.

OpenCVによる内蔵カメラ映像のリアルタイム描画

以下のコードで簡単にリアルタイム映像を描画することができます. このコードはカメラが使用できる状態でなければ動きません.

error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'

というエラーが出た場合は映像が受け取れていませんので,カメラの設定の確認(プライバシーの設定→カメラ)や外部カメラの接続を行う必要があります.

import cv2

# VideoCaptureオブジェクトの作成 
capture = cv2.VideoCapture(0) # 複数のカメラが接続されている場合は引数で指定できます

# 解像度の変更
capture.set(cv2.CAP_PROP_FRAME_WIDTH, 1280)
print(f"解像度: {capture.get(cv2.CAP_PROP_FRAME_WIDTH)}×{capture.get(cv2.CAP_PROP_FRAME_HEIGHT)}")

while(True):
    ret, frame = capture.read()
    cv2.imshow('frame',frame)
    # エスケープキーが押されたら終了
    if cv2.waitKey(1) == 27:
        break

# カメラを終了しウィンドウを閉じる
capture.release()
cv2.destroyAllWindows()

【関連(外部サイト)】OpenCV CV2 waitkeyの一覧
キーが押されたときの処理をwaitKeyで書きますが,そのときに指定するキー番号の一覧です.(矢印キーのみ扱いに注意)

【関連(外部サイト)】note.nkmk OpenCV
拡大・縮小 切り出し 図形の描画などの具体的な使用例

【関連(外部サイト)】OpenCV - Open Computer Vision Library

スマートフォンをウェブカメラとして利用する方法

カメラが内蔵されておらず,Webカメラを持っていない場合でも,スマートフォンをWebカメラとして使用することができます. IP Webcamを使用して,スマートフォンをWebカメラとして使用します.

手順

  1. IP Webcamをスマートフォンにインストールする.
  2. スマートフォンで IP Webcam を起動し,右上のメニュー または 一番下から『映像ストリーミング開始』を押し,撮影を開始する.
  3. 画面に表示されたURL(http://***.***.**.***:****) を利用して下記のコードを走らせる.
  4. 
    import requests
    import cv2
    import numpy as np
    import imutils
      
    # スマートフォンの画面に表示されたURLを使用する
    url = "http://***.***.**.***:****/shot.jpg" # /shot.jpg を最後に付けること
      
    while True:
        img_resp = requests.get(url)
        img_arr = np.array(bytearray(img_resp.content), dtype=np.uint8)
        img = cv2.imdecode(img_arr, -1)
        img = imutils.resize(img, width=1200, height=540)
        cv2.imshow("Android_cam", img)
      
        # エスケープキーが押されたら終了
        if cv2.waitKey(1) == 27:
            break
            
    cv2.destroyAllWindows()
    
IP Webcamの『ビデオ設定』からメインカメラを前面カメラに変更することで内カメラを使用することができます. また,解像度の変更や上下の反転もビデオ設定から行うことができます.

【参考(外部サイト)】Connect your android phone camera to OpenCV
IP Webcamの接続方法について解説しているサイト.

【関連(外部サイト)】 スマホをWEBカメラ化できるアプリがすごい
iVCamというアプリケーションを使用してスマートフォンをWebカメラ化する方法について解説しているサイトです.一度試して上手くいきませんでしたが紹介しておきます.

映像の取得ができたので次回は,dlibを使用した顔器官の検出方法について紹介します.

【目次に戻る】 次へ進む ->