log/20250515/佐藤綺羅
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
[[FrontPage]]
*ターミナル上でのカメラ操作 [#db3a4b05]
ターミナル上で
lsusb
のコマンドを実行すると、USBポートに接続されたデバイスを列挙する。
guvcview
のコマンドでカメラ起動し、映像が出力される。~
カメラ出力が選択できるが、MJPEGが最も低容量なのでこれを使おう。~
1フレーム毎をJPEG形式で保存するため、画素情報が圧縮の過程で失われてしまう点については注意。~
画素値の正確な取得を行いたい場合はBGR3を使用すべし。~
*OpenCVにおけるカメラ操作 [#m23284e4]
**cv2.VideoCaptureクラス [#rd934a65]
OpenCVにおける動画のキャプチャにはcv2.VideoCaptureクラスを使用する。~
以下はそのコンストラクタ。~
cv2.VideoCapture(index, apiPreference)
引数は以下の通り。~
|index(必須)|ビデオキャプチャデバイスのID。0,1,2などの整数を設定する。|
|apiPreference(任意)|ビデオキャプチャデバイスのアクセスに使用するAPIの優先度を指定するためのオプション引数。この引数を使用することで、特定のカメラAPIを優先的に選択したり、デフォルトのAPI選択動作を調整したりすることができる。(デフォルトはcv2.CAP_ANY)|
カメラが1台しか接続されていない場合、カメラのデバイスIDは0になるため、indexには0を与えれば良い。~
2台以上カメラを用いる場合はindexを区別した上で別々の変数に格納する必要がある。~
indexはUSBのポート番号に対応する。~
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クラスには多数のメソッドが存在する。~
以下の項で解説する。~
***cv2.VideoCapture.read [#e43bd09f]
cv2.VideoCapture.read()
カメラから1フレーム読み取りを行うメソッド。~
引数を取らない。~
戻り値は以下の2つ。~
|ret|画像の取得が成功したかどうかの結果。bool型。|
|frame|読み込まれた画像データ。BGRの画素情報を格納した3次元配列(高さ×幅×チャンネル数)。Numpy配列。|
***cv2.VideoCapture.release [#d6460d0c]
cv2.VideoCapture.release()
読み込んだ動画ファイルやカメラデバイスを閉じ、リソースを解放するメソッド。~
引数を取らず、戻り値を返さない。~
明示的にrelease()を実行しなくてもVideoCaptureオブジェクトのデストラクタが正常に実行されれば自動的にrelease()が実行される。~
***cv2.VideoCapture.set [#zbbf43d9]
cv2.VideoCapture.set(propId, value)
カメラまたは動画ファイルの設定を変更するメソッド。~
引数は以下の通り。~
|propId(必須)|VideoCapturePropertiesで定義されている識別子|
|value(必須)|プロパティに設定する値。float型。|
valueはfloat型なので、整数を代入すると型変換される。~
cv2.VideoCaptureクラスでサポートされているプロパティを指定すると、戻り値Trueが返される。~
なお、戻り値はプロパティがサポートされているかのみを示し、設定が正しく行われたかを示すわけではないので注意。~
propIdで設定できるプロパティは多岐に渡るが、以下に代表的なプロパティの一覧を示す。~
|プロパティ|対象|説明|
|cv2.CAP_PROP_FRAME_WIDTH|カメラおよび動画ファイル|フレームの幅を設定または取得。|
|cv2.CAP_PROP_FRAME_HEIGHT|カメラおよび動画ファイル|フレームの高さを設定または取得。|
|cv2.CAP_PROP_FPS|カメラおよび動画ファイル|フレームレート(FPS)を設定または取得。|
|cv2.CAP_PROP_FOURCC|カメラおよび動画ファイル|ビデオコーデックを設定または取得。fourcc(Four Character Code)を使用して指定。|
|cv2.CAP_PROP_FORMAT|カメラおよび動画ファイル|フレームデータのフォーマットを取得。|
|cv2.CAP_PROP_BRIGHTNESS|カメラ |明るさを設定または取得。|
|cv2.CAP_PROP_CONTRAST|カメラ|コントラストを設定または取得。|
|cv2.CAP_PROP_SATURATION|カメラ|彩度を設定または取得。|
|cv2.CAP_PROP_HUE|カメラ|色相を設定または取得。|
|cv2.CAP_PROP_GAIN|カメラ|ゲインを設定または取得。|
|cv2.CAP_PROP_EXPOSURE|カメラ|露出を設定または取得。|
|cv2.CAP_PROP_AUTOFOCUS|カメラ|オートフォーカスの有効/無効を設定または取得。|
|cv2.CAP_PROP_SHARPNESS|カメラ|鮮明度を設定または取得。|
|cv2.CAP_PROP_ZOOM|カメラ|ズームを設定または取得。|
|cv2.CAP_PROP_PAN|カメラ|パン(水平方向のカメラの位置)を設定または取得。|
|cv2.CAP_PROP_TILT|カメラ|チルト(垂直方向のカメラの位置)を設定または取得。|
|cv2.CAP_PROP_AUTO_EXPOSURE|カメラ|オート露出を設定または取得。|
|cv2.CAP_PROP_POS_MSEC|動画ファイル|動画ファイルの現在の再生位置(ミリ秒単位)を取得または設定。|
|cv2.CAP_PROP_POS_FRAMES|動画ファイル|動画ファイルの現在のフレーム位置を取得または設定。|
|cv2.CAP_PROP_POS_AVI_RATIO|動画ファイル|動画ファイルの相対位置: 0 =「動画ファイルの先頭」、1 =「動画ファイルの終わり」。|
|cv2.CAP_PROP_FRAME_COUNT|動画ファイル|動画ファイル内の総フレーム数を取得。|
***cv2.VideoCapture.get [#acd511e3]
cv2.VideoCapture.get(propId)
カメラまたは動画ファイルから設定値を取得するメソッド。
引数propIdはcv2.VideoCapture.setと同様。
終了行:
[[FrontPage]]
*ターミナル上でのカメラ操作 [#db3a4b05]
ターミナル上で
lsusb
のコマンドを実行すると、USBポートに接続されたデバイスを列挙する。
guvcview
のコマンドでカメラ起動し、映像が出力される。~
カメラ出力が選択できるが、MJPEGが最も低容量なのでこれを使おう。~
1フレーム毎をJPEG形式で保存するため、画素情報が圧縮の過程で失われてしまう点については注意。~
画素値の正確な取得を行いたい場合はBGR3を使用すべし。~
*OpenCVにおけるカメラ操作 [#m23284e4]
**cv2.VideoCaptureクラス [#rd934a65]
OpenCVにおける動画のキャプチャにはcv2.VideoCaptureクラスを使用する。~
以下はそのコンストラクタ。~
cv2.VideoCapture(index, apiPreference)
引数は以下の通り。~
|index(必須)|ビデオキャプチャデバイスのID。0,1,2などの整数を設定する。|
|apiPreference(任意)|ビデオキャプチャデバイスのアクセスに使用するAPIの優先度を指定するためのオプション引数。この引数を使用することで、特定のカメラAPIを優先的に選択したり、デフォルトのAPI選択動作を調整したりすることができる。(デフォルトはcv2.CAP_ANY)|
カメラが1台しか接続されていない場合、カメラのデバイスIDは0になるため、indexには0を与えれば良い。~
2台以上カメラを用いる場合はindexを区別した上で別々の変数に格納する必要がある。~
indexはUSBのポート番号に対応する。~
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クラスには多数のメソッドが存在する。~
以下の項で解説する。~
***cv2.VideoCapture.read [#e43bd09f]
cv2.VideoCapture.read()
カメラから1フレーム読み取りを行うメソッド。~
引数を取らない。~
戻り値は以下の2つ。~
|ret|画像の取得が成功したかどうかの結果。bool型。|
|frame|読み込まれた画像データ。BGRの画素情報を格納した3次元配列(高さ×幅×チャンネル数)。Numpy配列。|
***cv2.VideoCapture.release [#d6460d0c]
cv2.VideoCapture.release()
読み込んだ動画ファイルやカメラデバイスを閉じ、リソースを解放するメソッド。~
引数を取らず、戻り値を返さない。~
明示的にrelease()を実行しなくてもVideoCaptureオブジェクトのデストラクタが正常に実行されれば自動的にrelease()が実行される。~
***cv2.VideoCapture.set [#zbbf43d9]
cv2.VideoCapture.set(propId, value)
カメラまたは動画ファイルの設定を変更するメソッド。~
引数は以下の通り。~
|propId(必須)|VideoCapturePropertiesで定義されている識別子|
|value(必須)|プロパティに設定する値。float型。|
valueはfloat型なので、整数を代入すると型変換される。~
cv2.VideoCaptureクラスでサポートされているプロパティを指定すると、戻り値Trueが返される。~
なお、戻り値はプロパティがサポートされているかのみを示し、設定が正しく行われたかを示すわけではないので注意。~
propIdで設定できるプロパティは多岐に渡るが、以下に代表的なプロパティの一覧を示す。~
|プロパティ|対象|説明|
|cv2.CAP_PROP_FRAME_WIDTH|カメラおよび動画ファイル|フレームの幅を設定または取得。|
|cv2.CAP_PROP_FRAME_HEIGHT|カメラおよび動画ファイル|フレームの高さを設定または取得。|
|cv2.CAP_PROP_FPS|カメラおよび動画ファイル|フレームレート(FPS)を設定または取得。|
|cv2.CAP_PROP_FOURCC|カメラおよび動画ファイル|ビデオコーデックを設定または取得。fourcc(Four Character Code)を使用して指定。|
|cv2.CAP_PROP_FORMAT|カメラおよび動画ファイル|フレームデータのフォーマットを取得。|
|cv2.CAP_PROP_BRIGHTNESS|カメラ |明るさを設定または取得。|
|cv2.CAP_PROP_CONTRAST|カメラ|コントラストを設定または取得。|
|cv2.CAP_PROP_SATURATION|カメラ|彩度を設定または取得。|
|cv2.CAP_PROP_HUE|カメラ|色相を設定または取得。|
|cv2.CAP_PROP_GAIN|カメラ|ゲインを設定または取得。|
|cv2.CAP_PROP_EXPOSURE|カメラ|露出を設定または取得。|
|cv2.CAP_PROP_AUTOFOCUS|カメラ|オートフォーカスの有効/無効を設定または取得。|
|cv2.CAP_PROP_SHARPNESS|カメラ|鮮明度を設定または取得。|
|cv2.CAP_PROP_ZOOM|カメラ|ズームを設定または取得。|
|cv2.CAP_PROP_PAN|カメラ|パン(水平方向のカメラの位置)を設定または取得。|
|cv2.CAP_PROP_TILT|カメラ|チルト(垂直方向のカメラの位置)を設定または取得。|
|cv2.CAP_PROP_AUTO_EXPOSURE|カメラ|オート露出を設定または取得。|
|cv2.CAP_PROP_POS_MSEC|動画ファイル|動画ファイルの現在の再生位置(ミリ秒単位)を取得または設定。|
|cv2.CAP_PROP_POS_FRAMES|動画ファイル|動画ファイルの現在のフレーム位置を取得または設定。|
|cv2.CAP_PROP_POS_AVI_RATIO|動画ファイル|動画ファイルの相対位置: 0 =「動画ファイルの先頭」、1 =「動画ファイルの終わり」。|
|cv2.CAP_PROP_FRAME_COUNT|動画ファイル|動画ファイル内の総フレーム数を取得。|
***cv2.VideoCapture.get [#acd511e3]
cv2.VideoCapture.get(propId)
カメラまたは動画ファイルから設定値を取得するメソッド。
引数propIdはcv2.VideoCapture.setと同様。
ページ名: