OpenCV 4.13.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 4.13.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。
OpenCVによるVideo I/Oの概要

参照

概要

OpenCV の ビデオI/O モジュールは、動画や画像シーケンスを読み書きするためのクラスと関数の集合である。

基本的に、本モジュールは多くの動画 I/O API をバックエンドとして利用するための 2 層インターフェースとして、cv::VideoCapture クラスと cv::VideoWriter クラスを提供する。

Video I/O with OpenCV

Direct Show (DSHOW)、Microsoft Media Foundation (MSMF)、Video 4 Linux (V4L) などの一部のバックエンドは、オペレーティングシステムが提供する動画 I/O ライブラリへのインターフェースである。

Kinect 用の OpenNI2、Intel Perceptual Computing SDK、GStreamer、XIMEA Camera API などのその他のバックエンドは、プロプライエタリなドライバや外部ライブラリへのインターフェースである。

サポートされているバックエンドの一覧はこちらを参照: cv::VideoCaptureAPIs

警告
一部のバックエンドは実験的であり、利用は自己責任で行うこと
覚え書き
各バックエンドはデバイスのプロパティ (cv::VideoCaptureProperties) を異なる方法でサポートしており、またプロパティをまったくサポートしない場合もある。

実行時にバックエンドを選択する

OpenCV は最初に利用可能なバックエンド (apiPreference=cv::CAP_ANY) を自動的に選択して使用する。

高度な使い方として、実行時に使用するバックエンドを選択できる。

たとえば、Microsoft Media Foundation (MSMF) をバックエンドとしてデフォルトカメラから取得する場合:

//declare a capture object
//or specify the apiPreference with open
cap.open(0, cv::CAP_MSMF);
Class for video capturing from video files, image sequences or cameras.
Definition videoio.hpp:786
@ CAP_MSMF
Microsoft Media Foundation (via videoInput). See platform specific notes above.
Definition videoio.hpp:115

Microsoft Media Foundation (MSMF) をバックエンドとしてファイルから取得する場合:

//declare a capture object
//or specify the apiPreference with open
cap.open(filename, cv::CAP_MSMF);
参照
cv::VideoCapture::open() , cv::VideoCapture::VideoCapture()

バックエンドを有効にする方法

videoio のバックエンドには 2 種類ある。組み込み (built-in) バックエンドと、実行時に読み込まれるプラグイン (OpenCV 4.1.0 以降) である。実行時にバックエンドが実際に存在するかを確認するには、関数 cv::videoio_registry::getBackendscv::videoio_registry::hasBackendcv::videoio_registry::getBackendName を使用する。

組み込みの videoio バックエンドを有効にするには:

  1. 対応する CMake オプションを有効にする。例: -DWITH_GSTREAMER=ON
  2. OpenCV を再ビルドする

動的に読み込まれる videoio バックエンドを有効にするには (現在のサポート対象: Linux 上の GStreamer と FFmpeg、Linux および Windows 上の MediaSDK):

  1. バックエンドを有効にし、プラグインの一覧に追加する: -DWITH_GSTREAMER=ON -DVIDEOIO_PLUGIN_LIST=gstreamer CMake オプション
  2. OpenCV を再ビルドする
  3. libopencv_videoio_gstreamer.so ライブラリが lib ディレクトリに存在することを確認する
覚え書き
これら 2 つのモードを切り替える際は、CMake キャッシュのクリーンを忘れないこと

サードパーティのドライバやカメラを使用する

多くの産業用カメラや一部の動画 I/O デバイスは、オペレーティングシステム向けの標準的なドライバインターフェースを提供していない。そのため、これらのデバイスでは VideoCapture や VideoWriter を使用できない。

これらのデバイスにアクセスするには、メーカーが独自の C++ API とライブラリを提供しており、それを OpenCV アプリケーションにインクルードしてリンクする必要がある。

これらのライブラリがメモリバッファとの間で画像を読み書きするのはよくあるケースである。その場合、メモリバッファ (ユーザが確保したデータ) に対して Mat ヘッダを作成し、OpenCV の関数を使ってその場で処理することが可能である。詳細は cv::Mat::Mat() を参照。

FFmpeg ライブラリ

OpenCV は、音声や動画の録画・変換・ストリーミングのバックエンドとして FFmpeg ライブラリ (http://ffmpeg.org/) を使用できる。FFmpeg は完全かつクロスリファレンスなソリューションである。OpenCV の構成時に FFmpeg を有効にすると、CMake がバイナリをダウンロードして OPENCV_SOURCE_CODE/3rdparty/ffmpeg/ にインストールする。実行時に FFmpeg を使用するには、FFmpeg のバイナリをアプリケーションとともに配布する必要がある。

覚え書き
FFmpeg は GNU Lesser General Public License (LGPL) バージョン 2.1 以降の下でライセンスされている。詳細およびライセンス情報については OPENCV_SOURCE_CODE/3rdparty/ffmpeg/readme.txt および http://ffmpeg.org/legal.html を参照