ターミナル上で
lsusb
のコマンドを実行すると、USBポートに接続されたデバイスを列挙する。
guvcview
のコマンドでカメラ起動し、映像が出力される。
カメラ出力が選択できるが、MJPEGが最も低容量なのでこれを使おう。
1フレーム毎をJPEG形式で保存するため、画素情報が圧縮の過程で失われてしまう点については注意。
画素値の正確な取得を行いたい場合はBGR3を使用すべし。
cv2.VideoCapture(index, apiPreference)
Webカメラから動画を取得する関数。
引数は以下の通り。
| index(必須) | ビデオキャプチャデバイスのID。0,1,2などの整数を設定する。 |
| apiPreference(任意) | ビデオキャプチャデバイスのアクセスに使用するAPIの優先度を指定するためのオプション引数。この引数を使用することで、特定のカメラAPIを優先的に選択したり、デフォルトのAPI選択動作を調整したりすることができる。(デフォルトはcv2.CAP_ANY) |
カメラが1台しか接続されていない場合、カメラのデバイスIDは0になるため、indexには0を与えれば良い。
2台以上カメラを用いる場合はindexを区別した上で別々の変数に格納する必要がある。
apiPreferenceには、以下のようなものがある。
基本的にデフォルトで問題ない。
| cv2.CAP_ANY | 利用可能なすべてのカメラAPIを試行し、最初に利用可能なものを選択する。(デフォルト値) |
| cv2.CAP_V4L2 | Video for Linux 2 (V4L2) APIを使用してカメラデバイスにアクセスする。Linuxで使用する場合がある。 |
| cv2.CAP_DSHOW | DirectShow APIを使用してカメラデバイスにアクセスする。Windowsで使用する場合がある。 |
| cv2.CAP_MSMF | Microsoft Media Foundation APIを使用してカメラデバイスにアクセスする。Windowsで使用する場合がある。 |
戻り値はcv2.VideoCaptureクラスのインスタンスである。
cv2.VideoCaptureクラスには多数のメンバ関数が存在する。
以下の項で解説する。