OpenCV 4.12.0
開源計算機視覺
載入中...
搜尋中...
無匹配項
cv::VideoWriter 類參考

影片寫入器類。更多...

#include <opencv2/videoio.hpp>

cv::VideoWriter 的協作圖

公共成員函式

 VideoWriter ()
 預設建構函式。
 
 VideoWriter (const String &filename, int apiPreference, int fourcc, double fps, const Size &frameSize, const std::vector< int > &params)
 
 VideoWriter (const String &filename, int apiPreference, int fourcc, double fps, Size frameSize, bool isColor=true)
 
 VideoWriter (const String &filename, int fourcc, double fps, const Size &frameSize, const std::vector< int > &params)
 
 VideoWriter (const String &filename, int fourcc, double fps, Size frameSize, bool isColor=true)
 
virtual ~VideoWriter ()
 預設解構函式。
 
virtual double get (int propId) const
 返回指定的 VideoWriter 屬性。
 
String getBackendName () const
 返回使用的後端API名稱。
 
virtual bool isOpened () const
 如果影片寫入器已成功初始化,則返回 true。
 
bool open (const String &filename, int apiPreference, int fourcc, double fps, const Size &frameSize, const std::vector< int > &params)
 
bool open (const String &filename, int apiPreference, int fourcc, double fps, Size frameSize, bool isColor=true)
 
bool open (const String &filename, int fourcc, double fps, const Size &frameSize, const std::vector< int > &params)
 
virtual bool open (const String &filename, int fourcc, double fps, Size frameSize, bool isColor=true)
 初始化或重新初始化影片寫入器。
 
virtual VideoWriteroperator<< (const Mat &image)
 用於寫入下一影片幀的流運算子。
 
virtual VideoWriteroperator<< (const UMat &image)
 
virtual void release ()
 關閉影片寫入器。
 
virtual bool set (int propId, double value)
 VideoWriter 中設定屬性。
 
virtual void write (InputArray image)
 寫入下一個影片幀。
 

靜態公共成員函式

static int fourcc (char c1, char c2, char c3, char c4)
 將 4 個字元連線成一個 fourcc 程式碼。
 

靜態保護成員函式

static Ptr< IVideoWriter > create (const String &filename, int fourcc, double fps, Size frameSize, bool isColor=true)
 

保護屬性

Ptr< IVideoWriter > iwriter
 
Ptr< CvVideoWriterwriter
 

詳細描述

影片寫入類。

該類提供了用於寫入影片檔案或影像序列的 C++ API。

示例
samples/cpp/tutorial_code/videoio/video-write/video-write.cppsamples/cpp/videowriter_basic.cppsamples/tapi/hog.cpp

建構函式 & 解構函式文件

◆ VideoWriter() [1/5]

cv::VideoWriter::VideoWriter ( )
Python
cv.VideoWriter() -> <VideoWriter object>
cv.VideoWriter(filename, fourcc, fps, frameSize[, isColor]) -> <VideoWriter object>
cv.VideoWriter(filename, apiPreference, fourcc, fps, frameSize[, isColor]) -> <VideoWriter object>
cv.VideoWriter(filename, fourcc, fps, frameSize, params) -> <VideoWriter object>
cv.VideoWriter(filename, apiPreference, fourcc, fps, frameSize, params) -> <VideoWriter object>

預設建構函式。

建構函式/函式初始化影片寫入器。

  • 在 Linux 上,FFMPEG 用於寫入影片;
  • 在 Windows 上,使用 FFMPEG 或 MSWF 或 DSHOW;
  • 在 MacOSX 上,使用 AVFoundation。

◆ VideoWriter() [2/5]

cv::VideoWriter::VideoWriter ( const String & filename,
int fourcc,
double fps,
Size frameSize,
bool isColor = true )
Python
cv.VideoWriter() -> <VideoWriter object>
cv.VideoWriter(filename, fourcc, fps, frameSize[, isColor]) -> <VideoWriter object>
cv.VideoWriter(filename, apiPreference, fourcc, fps, frameSize[, isColor]) -> <VideoWriter object>
cv.VideoWriter(filename, fourcc, fps, frameSize, params) -> <VideoWriter object>
cv.VideoWriter(filename, apiPreference, fourcc, fps, frameSize, params) -> <VideoWriter object>

這是一個過載成員函式,為方便起見提供。它與上述函式的區別僅在於它接受的引數。

引數
filename輸出影片檔案的名稱。
fourcc用於壓縮幀的編解碼器的 4 字元程式碼。例如,VideoWriter::fourcc('P','I','M','1') 是 MPEG-1 編解碼器,VideoWriter::fourcc('M','J','P','G') 是 motion-jpeg 編解碼器等。程式碼列表可以在 MSDN 頁面獲取,或者在 fourcc 網站的這個 頁面 獲取更完整的列表。帶有 MP4 容器的 FFMPEG 後端原生使用其他值作為 fourcc 程式碼:參見 ObjectType,因此您可能會收到 OpenCV 關於 fourcc 程式碼轉換的警告訊息。
fps建立的影片流的幀率。
frameSize影片幀的大小。
isColor如果它不為零,編碼器將期望並編碼彩色幀,否則它將處理灰度幀。

提示

  • 在某些後端中,fourcc=-1 會彈出系統中的編解碼器選擇對話方塊。
  • 要儲存影像序列,請使用適當的檔名(例如 img_%02d.jpg)並設定 fourcc=0fps=0。使用未壓縮的影像格式(例如 img_%02d.BMP)儲存原始幀。
  • 大多數編解碼器都是有損的。如果您想要無損影片檔案,則需要使用無損編解碼器(例如 FFMPEG FFV1、Huffman HFYU、Lagarith LAGS 等...)。
  • 如果啟用了 FFMPEG,使用 codec=0; fps=0; 可以建立未壓縮(原始)影片檔案。
  • 如果使用 FFMPEG,我們允許奇數寬度或高度的幀,但在這種情況下,我們會截斷最右邊的列/最底部的一行。這可能應該更優雅地處理,但 FFMPEG swscale 內部的一些函式需要偶數寬度/高度。

◆ VideoWriter() [3/5]

cv::VideoWriter::VideoWriter ( const String & filename,
int apiPreference,
int fourcc,
double fps,
Size frameSize,
bool isColor = true )
Python
cv.VideoWriter() -> <VideoWriter object>
cv.VideoWriter(filename, fourcc, fps, frameSize[, isColor]) -> <VideoWriter object>
cv.VideoWriter(filename, apiPreference, fourcc, fps, frameSize[, isColor]) -> <VideoWriter object>
cv.VideoWriter(filename, fourcc, fps, frameSize, params) -> <VideoWriter object>
cv.VideoWriter(filename, apiPreference, fourcc, fps, frameSize, params) -> <VideoWriter object>

這是一個過載成員函式,為方便起見提供。它與上述函式的區別僅在於它接受的引數。apiPreference 引數允許指定要使用的 API 後端。如果存在多個後端,可以用於強制使用特定的讀取器實現:例如 cv::CAP_FFMPEGcv::CAP_GSTREAMER

◆ VideoWriter() [4/5]

cv::VideoWriter::VideoWriter ( const String & filename,
int fourcc,
double fps,
const Size & frameSize,
const std::vector< int > & params )
Python
cv.VideoWriter() -> <VideoWriter object>
cv.VideoWriter(filename, fourcc, fps, frameSize[, isColor]) -> <VideoWriter object>
cv.VideoWriter(filename, apiPreference, fourcc, fps, frameSize[, isColor]) -> <VideoWriter object>
cv.VideoWriter(filename, fourcc, fps, frameSize, params) -> <VideoWriter object>
cv.VideoWriter(filename, apiPreference, fourcc, fps, frameSize, params) -> <VideoWriter object>

這是一個過載成員函式,為方便起見提供。它與上述函式的區別僅在於它接受的引數。params 引數允許指定額外的編碼器引數,編碼為對(paramId_1, paramValue_1, paramId_2, paramValue_2, ... .)參見 cv::VideoWriterProperties

◆ VideoWriter() [5/5]

cv::VideoWriter::VideoWriter ( const String & filename,
int apiPreference,
int fourcc,
double fps,
const Size & frameSize,
const std::vector< int > & params )
Python
cv.VideoWriter() -> <VideoWriter object>
cv.VideoWriter(filename, fourcc, fps, frameSize[, isColor]) -> <VideoWriter object>
cv.VideoWriter(filename, apiPreference, fourcc, fps, frameSize[, isColor]) -> <VideoWriter object>
cv.VideoWriter(filename, fourcc, fps, frameSize, params) -> <VideoWriter object>
cv.VideoWriter(filename, apiPreference, fourcc, fps, frameSize, params) -> <VideoWriter object>

這是一個過載成員函式,為方便起見提供。它與上述函式的區別僅在於它接受的引數。

◆ ~VideoWriter()

virtual cv::VideoWriter::~VideoWriter ( )
virtual

預設解構函式。

該方法首先呼叫 VideoWriter::release 關閉已開啟的檔案。

成員函式文件

◆ create()

static Ptr< IVideoWriter > cv::VideoWriter::create ( const String & filename,
int fourcc,
double fps,
Size frameSize,
bool isColor = true )
staticprotected

◆ fourcc()

static int cv::VideoWriter::fourcc ( char c1,
char c2,
char c3,
char c4 )
static
Python
cv.VideoWriter.fourcc(c1, c2, c3, c4) -> retval
cv.VideoWriter_fourcc(c1, c2, c3, c4) -> retval

將 4 個字元連線成一個 fourcc 程式碼。

返回
一個 fourcc 程式碼

此靜態方法構造將在建構函式 VideoWriter::VideoWriterVideoWriter::open 中使用的編解碼器的 fourcc 程式碼。

◆ get()

virtual double cv::VideoWriter::get ( int propId) const
virtual
Python
cv.VideoWriter.get(propId) -> retval

返回指定的 VideoWriter 屬性。

引數
propId來自 cv::VideoWriterProperties 的屬性識別符號(例如 cv::VIDEOWRITER_PROP_QUALITY)或 影片 I/O API 後端的附加標誌 之一
返回
指定屬性的值。當查詢 VideoWriter 例項使用的後端不支援的屬性時,返回值為 0。

◆ getBackendName()

String cv::VideoWriter::getBackendName ( ) const
Python
cv.VideoWriter.getBackendName() -> retval

返回使用的後端API名稱。

注意
流應已開啟。

◆ isOpened()

virtual bool cv::VideoWriter::isOpened ( ) const
virtual
Python
cv.VideoWriter.isOpened() -> retval

如果影片寫入器已成功初始化,則返回 true。

示例
samples/cpp/tutorial_code/videoio/video-write/video-write.cppsamples/cpp/videowriter_basic.cppsamples/tapi/hog.cpp

◆ open() [1/4]

bool cv::VideoWriter::open ( const String & filename,
int apiPreference,
int fourcc,
double fps,
const Size & frameSize,
const std::vector< int > & params )
Python
cv.VideoWriter.open(filename, fourcc, fps, frameSize[, isColor]) -> retval
cv.VideoWriter.open(filename, apiPreference, fourcc, fps, frameSize[, isColor]) -> retval
cv.VideoWriter.open(filename, fourcc, fps, frameSize, params) -> retval
cv.VideoWriter.open(filename, apiPreference, fourcc, fps, frameSize, params) -> retval

這是一個過載成員函式,為方便起見提供。它與上述函式的區別僅在於它接受的引數。

◆ open() [2/4]

bool cv::VideoWriter::open ( const String & filename,
int apiPreference,
int fourcc,
double fps,
Size frameSize,
bool isColor = true )
Python
cv.VideoWriter.open(filename, fourcc, fps, frameSize[, isColor]) -> retval
cv.VideoWriter.open(filename, apiPreference, fourcc, fps, frameSize[, isColor]) -> retval
cv.VideoWriter.open(filename, fourcc, fps, frameSize, params) -> retval
cv.VideoWriter.open(filename, apiPreference, fourcc, fps, frameSize, params) -> retval

這是一個過載成員函式,為方便起見提供。它與上述函式的區別僅在於它接受的引數。

◆ open() [3/4]

bool cv::VideoWriter::open ( const String & filename,
int fourcc,
double fps,
const Size & frameSize,
const std::vector< int > & params )
Python
cv.VideoWriter.open(filename, fourcc, fps, frameSize[, isColor]) -> retval
cv.VideoWriter.open(filename, apiPreference, fourcc, fps, frameSize[, isColor]) -> retval
cv.VideoWriter.open(filename, fourcc, fps, frameSize, params) -> retval
cv.VideoWriter.open(filename, apiPreference, fourcc, fps, frameSize, params) -> retval

這是一個過載成員函式,為方便起見提供。它與上述函式的區別僅在於它接受的引數。

◆ open() [4/4]

virtual bool cv::VideoWriter::open ( const String & filename,
int fourcc,
double fps,
Size frameSize,
bool isColor = true )
virtual
Python
cv.VideoWriter.open(filename, fourcc, fps, frameSize[, isColor]) -> retval
cv.VideoWriter.open(filename, apiPreference, fourcc, fps, frameSize[, isColor]) -> retval
cv.VideoWriter.open(filename, fourcc, fps, frameSize, params) -> retval
cv.VideoWriter.open(filename, apiPreference, fourcc, fps, frameSize, params) -> retval

初始化或重新初始化影片寫入器。

該方法開啟影片寫入器。引數與建構函式 VideoWriter::VideoWriter 中的引數相同。

返回
如果影片寫入器已成功初始化,則為 true

該方法首先呼叫 VideoWriter::release 關閉已開啟的檔案。

示例
samples/cpp/tutorial_code/videoio/video-write/video-write.cppsamples/cpp/videowriter_basic.cppsamples/tapi/hog.cpp

◆ operator<<() [1/2]

virtual VideoWriter & cv::VideoWriter::operator<< ( const Mat & image)
virtual

用於寫入下一影片幀的流運算子。

另請參見

◆ operator<<() [2/2]

virtual VideoWriter & cv::VideoWriter::operator<< ( const UMat & image)
virtual

這是一個過載成員函式,為方便起見提供。它與上述函式的區別僅在於它接受的引數。

另請參見

◆ release()

virtual void cv::VideoWriter::release ( )
virtual
Python
cv.VideoWriter.release() ->

關閉影片寫入器。

該方法由隨後的 VideoWriter::openVideoWriter 解構函式自動呼叫。

◆ set()

virtual bool cv::VideoWriter::set ( int propId,
double  )
virtual
Python
cv.VideoWriter.set(propId, value) -> retval

VideoWriter 中設定屬性。

引數
propId來自 cv::VideoWriterProperties 的屬性識別符號(例如 cv::VIDEOWRITER_PROP_QUALITY)或 影片 I/O API 後端的附加標誌 之一
屬性的值。
返回
如果該屬性受 VideoWriter 例項使用的後端支援,則為 true

◆ write()

virtual void cv::VideoWriter::write ( InputArray image)
virtual
Python
cv.VideoWriter.write(image) ->

寫入下一個影片幀。

引數
image寫入的幀。通常,彩色影像應為 BGR 格式。

此函式/方法將指定的影像寫入影片檔案。它必須與開啟影片寫入器時指定的大小相同。

示例
samples/cpp/videowriter_basic.cpp.

成員資料文件

◆ iwriter

Ptr<IVideoWriter> cv::VideoWriter::iwriter
保護

◆ writer

Ptr<CvVideoWriter> cv::VideoWriter::writer
保護

該類的文件由以下檔案生成