本記事では、PythonでOpenCVによりカメラの画像を表示する方法について実際のコードを使用して紹介します。
Contents
OpenCVとは
OpenCV(Open Source Computer Vision Library,https://opencv.org)は、Intelが開発して公開したオープンソースで画像や動画を処理するのに必要な様々なライブラリが実装されています。誰でも無料で使うことができます。個人利用だけでなく商業利用でも使うことができます。
Pythonで画像処理のプログラムを作成するのによく使われており、ライブラリには豊富なアルゴリズムが用意されているため画像処理のためのプログラムをゼロから書く必要はありません。
C++、Java、Pythonのインターフェースで、Windows、Linux、MacOSやiOS、Androidと多くのOSに対応しています。
OpenCVによりカメラの映像から画像を取得する方法
カメラの映像から画像を取得するには以下の通りです。
cap = cv2.VideoCapture(0)
動画やカメラ(内蔵カメラ、webカメラ、USBカメラ)の映像を処理するにはVideoCaptureクラスを使います。
VideoCapture()でカメラにアクセスします。()の中には、デバイスIDを入れます。カメラが1つのみ付いている場合は「0」を指定します。「0」は内臓カメラが付いている場合は、内臓カメラが起動します。カメラが複数ついている場合はデバイスIDを「1」、「2」など数値を増やして入力する必要があります。
次に、取得した画像をフレームに表示する方法は以下の通りです。
success, img = cap.read()
VideoCapture(0)で取得したデータを、cap.read()でリアルタイムに処理して1フレーム分の画像データをimgに格納します。
successは、imgに画像データを取得できたかを判別するための変数になります。
cap.read()で1フレーム分を読み込んだら、次々と画像データが流れてくるためループ処理する必要があります。while文でループ処理してカメラから連続的に画像データを取得します。
実際のプログラム
こちらのコードを実行しカメラが起動し取得された画像データが表示されれば成功です。
cv2.imshow('Webcam', img)
読み込んだ画像を表示します。第一引数がフレームに表示される名前、第二引数は画像データになります。
cv2.waitKey(1)
1ms待ってから次のループに行くようになりimgを表示し続けます。
0xFF == ord('q'):
キーボードの「Q」を押すとwhileループを抜けます。
cap.release()
VideoCaptureオブジェクトの解放。
cv2.destroyAllWindows()
全てのウィンドウを閉じます。
まとめ
今回は、PythonでOpenCVによりカメラの画像を表示する方法について実際のコードを使用して紹介しました。
OpenCVは画像解析・認識するのに便利な機能が実装されているので興味がある方は参考にしてみてください。