MENU

python webカメラの起動

import cv2
import numpy as np

# Webカメラから入力を開始 --- (*1)
cap = cv2.VideoCapture(0)
while True:
# カメラの画像を読み込む --- (*2)
_, frame = cap.read()
# 画像を縮小表示する --- (*3)
frame = cv2.resize(frame, (500,300))
# ウィンドウに画像を出力 --- (*4)
cv2.imshow('OpenCV Web Camera', frame)
# ESCかEnterキーが押されたらループを抜ける
k = cv2.waitKey(1) # 1msec確認
if k == 27 or k == 13: break

cap.release() # カメラを解放
cv2.destroyAllWindows() # ウィンドウを破棄

 

opencvでカメラの映像や動画ファイルを処理するにはcv2.VideoCapture()を使う。

動画ファイルを読み込むには引数にパスを指定する。

今回はカメラの映像を読み込みたいのでカメラの番号を指定する。カメラの番号とは基本は0から順に割り振られていて、内臓カメラ0,USBで追加のカメラを接続すると1といった形になる。

 

今回のプログラムでは繰り返し画像を読み込むことで、動画をウィンドウに出力している。

 

カメラの画像を読み込む

read()メソッドで動画ファイルの1フレームごとのbool値(True,False)、画像データのタプルが返り値として返される。ファイルの取得が終わるとFalseとNoneを返す。

 

画像を縮小表示する

大きな画像は必要ないので縮小するためにcv2.resize()

 

ウィンドウに画像を出力

opencvには動画を再生させる特別なメソッドはないのでcv2.imshow()で画像を表示していく。第一引数は表示するフレームの名前なのでなんでもいい、第二引数は画像データ。

ESCかEnterキーが押されたらループを抜ける

cv2.waitkey(1)は1ミリ秒の出力を意味しておりその間に指定したキーが入力されると処理を止めるというものである。27はesc、13はEnterどちらかを押すとbreakが実行されwhile処理を終了する。

 

その後

cap.release() # カメラを解放
cv2.destroyAllWindows() # ウィンドウを破棄

それぞれでカメラを終了しウィンドウを閉じている。