![]() |
OpenCV 4.12.0
開源計算機視覺
|
OpenCV 影片 I/O 模組是一組用於讀取和寫入影片或影像序列的類和函式。
基本上,該模組提供 cv::VideoCapture 和 cv::VideoWriter 類作為到許多影片 I/O API 的雙層介面,這些 API 用作後端。
某些後端,例如 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) 作為後端從檔案抓取
有兩種影片 I/O 後端:內建後端和外掛,它們將在執行時載入(自 OpenCV 4.1.0 起)。使用函式 cv::videoio_registry::getBackends、cv::videoio_registry::hasBackend 和 cv::videoio_registry::getBackendName 以檢查執行時後端的實際存在情況。
要啟用內建影片 I/O 後端
-DWITH_GSTREAMER=ON要啟用動態載入的影片 I/O 後端(目前支援: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