![]() |
OpenCV 4.13.0
Open Source Computer Vision
|
OpenCV の ビデオI/O モジュールは、動画や画像シーケンスを読み書きするためのクラスと関数の集合である。
基本的に、本モジュールは多くの動画 I/O API をバックエンドとして利用するための 2 層インターフェースとして、cv::VideoCapture クラスと cv::VideoWriter クラスを提供する。
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
OpenCV は最初に利用可能なバックエンド (apiPreference=cv::CAP_ANY) を自動的に選択して使用する。
高度な使い方として、実行時に使用するバックエンドを選択できる。
たとえば、Microsoft Media Foundation (MSMF) をバックエンドとしてデフォルトカメラから取得する場合:
Microsoft Media Foundation (MSMF) をバックエンドとしてファイルから取得する場合:
videoio のバックエンドには 2 種類ある。組み込み (built-in) バックエンドと、実行時に読み込まれるプラグイン (OpenCV 4.1.0 以降) である。実行時にバックエンドが実際に存在するかを確認するには、関数 cv::videoio_registry::getBackends、cv::videoio_registry::hasBackend、cv::videoio_registry::getBackendName を使用する。
組み込みの videoio バックエンドを有効にするには:
-DWITH_GSTREAMER=ON動的に読み込まれる videoio バックエンドを有効にするには (現在のサポート対象: Linux 上の GStreamer と FFmpeg、Linux および Windows 上の MediaSDK):
-DWITH_GSTREAMER=ON -DVIDEOIO_PLUGIN_LIST=gstreamer CMake オプションlibopencv_videoio_gstreamer.so ライブラリが lib ディレクトリに存在することを確認する多くの産業用カメラや一部の動画 I/O デバイスは、オペレーティングシステム向けの標準的なドライバインターフェースを提供していない。そのため、これらのデバイスでは VideoCapture や VideoWriter を使用できない。
これらのデバイスにアクセスするには、メーカーが独自の C++ API とライブラリを提供しており、それを OpenCV アプリケーションにインクルードしてリンクする必要がある。
これらのライブラリがメモリバッファとの間で画像を読み書きするのはよくあるケースである。その場合、メモリバッファ (ユーザが確保したデータ) に対して Mat ヘッダを作成し、OpenCV の関数を使ってその場で処理することが可能である。詳細は cv::Mat::Mat() を参照。
OpenCV は、音声や動画の録画・変換・ストリーミングのバックエンドとして FFmpeg ライブラリ (http://ffmpeg.org/) を使用できる。FFmpeg は完全かつクロスリファレンスなソリューションである。OpenCV の構成時に FFmpeg を有効にすると、CMake がバイナリをダウンロードして OPENCV_SOURCE_CODE/3rdparty/ffmpeg/ にインストールする。実行時に FFmpeg を使用するには、FFmpeg のバイナリをアプリケーションとともに配布する必要がある。
OPENCV_SOURCE_CODE/3rdparty/ffmpeg/readme.txt および http://ffmpeg.org/legal.html を参照