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

影片讀取器介面,請參閱 createVideoReader()更多...

#include <opencv2/cudacodec.hpp>

cv::cudacodec::VideoReader 的協作圖

公共成員函式

virtual ~VideoReader ()
 
virtual FormatInfo format () const =0
 返回影片檔案格式資訊。
 
virtual bool get (const int propertyId, double &propertyVal) const =0
 檢索 VideoSource 使用的指定屬性。
 
virtual bool get (const VideoReaderProps propertyId, double &propertyVal) const =0
 返回指定的 VideoReader 屬性。
 
virtual bool getVideoReaderProps (const VideoReaderProps propertyId, double &propertyValOut, double propertyValIn=0) const =0
 
virtual bool grab (cuda::Stream &stream=cuda::Stream::Null())=0
 從影片源中抓取下一幀。
 
virtual bool nextFrame (cuda::GpuMat &frame, cuda::GpuMat &histogram, cuda::Stream &stream=cuda::Stream::Null())=0
 抓取、解碼並返回下一個影片幀和幀亮度直方圖。
 
virtual bool nextFrame (cuda::GpuMat &frame, cuda::Stream &stream=cuda::Stream::Null())=0
 抓取、解碼並返回下一個影片幀。
 
bool retrieve (cuda::GpuMat &frame) const
 返回下一個影片幀。
 
bool retrieve (Mat &frame, const size_t idx) const
 返回之前抓取的編碼影片資料。
 
virtual bool retrieve (OutputArray frame, const size_t idx=static_cast< size_t >(VideoReaderProps::PROP_DECODED_FRAME_IDX)) const =0
 返回之前抓取的影片資料。
 
virtual bool set (const ColorFormat colorFormat, const BitDepth bitDepth=BitDepth::UNCHANGED, const bool planar=false)=0
 設定由 nextFrame()/retrieve() 返回的幀所需的 ColorFormat。
 
virtual bool set (const VideoReaderProps propertyId, const double propertyVal)=0
 VideoReader 中設定屬性。
 
bool setVideoReaderProps (const VideoReaderProps propertyId, double propertyVal)
 

詳細描述

影片讀取器介面,請參閱 createVideoReader()

如果安裝了 Nvidia 的 Video Codec SDK,則可用。

解碼支援取決於 GPU,詳情請參閱 Nvidia Video Codec SDK 影片編碼和解碼 GPU 支援矩陣。

注意
  • 使用 VideoReader 介面的示例可在 opencv_source_code/samples/gpu/video_reader.cpp 中找到。

建構函式 & 解構函式文件

◆ ~VideoReader()

virtual cv::cudacodec::VideoReader::~VideoReader ( )
inlinevirtual

成員函式文件

◆ format()

virtual FormatInfo cv::cudacodec::VideoReader::format ( ) const
純虛擬函式

返回影片檔案格式資訊。

◆ get() [1/2]

virtual bool cv::cudacodec::VideoReader::get ( const int propertyId,
double & propertyVal ) const
純虛擬函式

檢索 VideoSource 使用的指定屬性。

引數
propertyId來自 cv::VideoCaptureProperties (例如 cv::CAP_PROP_POS_MSEC, cv::CAP_PROP_POS_FRAMES, ...) 或 影片 I/O API 後端的附加標誌 中的屬性識別符號。
propertyVal指定屬性的值。
返回
true,除非屬性未設定或不支援。

◆ get() [2/2]

virtual bool cv::cudacodec::VideoReader::get ( const VideoReaderProps propertyId,
double & propertyVal ) const
純虛擬函式

返回指定的 VideoReader 屬性。

引數
propertyId來自 cv::cudacodec::VideoReaderProps 的屬性識別符號 (例如 cv::cudacodec::VideoReaderProps::PROP_DECODED_FRAME_IDX, cv::cudacodec::VideoReaderProps::PROP_EXTRA_DATA_INDEX, ...)。
propertyVal
返回
true,除非屬性不支援。

◆ getVideoReaderProps()

virtual bool cv::cudacodec::VideoReader::getVideoReaderProps ( const VideoReaderProps propertyId,
double & propertyValOut,
double propertyValIn = 0 ) const
純虛擬函式

◆ grab()

virtual bool cv::cudacodec::VideoReader::grab ( cuda::Stream & stream = cuda::Stream::Null())
純虛擬函式

從影片源中抓取下一幀。

引數
用於非同步版本的流。
返回
成功時為 true (非零)。

該方法/函式從影片檔案或攝像頭抓取下一幀,成功時返回 true (非零)。

該函式的主要用途是在啟用 rawMode 時讀取編碼和解碼後的影片資料。啟用 rawMode 後,可在呼叫 grab() 之後呼叫 retrieve(),以檢索自上次呼叫 grab() 或建立 VideoReader 以來與當前影片源關聯的所有資料。

◆ nextFrame() [1/2]

virtual bool cv::cudacodec::VideoReader::nextFrame ( cuda::GpuMat & frame,
cuda::GpuMat & histogram,
cuda::Stream & stream = cuda::Stream::Null() )
純虛擬函式

抓取、解碼並返回下一個影片幀和幀亮度直方圖。

引數
[輸出]frame影片幀。
[輸出]histogram編碼幀亮度分量的直方圖,參見注釋。
用於非同步版本的流。
返回
如果未抓取任何幀,則為 false

如果沒有抓取任何幀(影片檔案中沒有更多幀),則方法返回 false。如果發生錯誤,方法將丟擲 Exception

注意
直方圖資料由 NVDEC 在解碼過程中收集,因此效能開銷為零。NVDEC 僅計算解碼輸出的亮度分量的直方圖資料,而不是在後處理幀(即應用縮放、裁剪等)上計算。如果源使用有限的亮度值範圍編碼(FormatInfo::videoFullRangeFlag == false),則直方圖 bin 值將對應於此有限的範圍值,並且需要對映以包含與 cuda::calcHist() 相同的輸出。如果需要,可以使用 MapHist() 實用函式在主機上執行此對映。

◆ nextFrame() [2/2]

virtual bool cv::cudacodec::VideoReader::nextFrame ( cuda::GpuMat & frame,
cuda::Stream & stream = cuda::Stream::Null() )
純虛擬函式

抓取、解碼並返回下一個影片幀。

引數
[輸出]frame影片幀。
用於非同步版本的流。
返回
如果未抓取任何幀,則為 false

如果沒有抓取任何幀(影片檔案中沒有更多幀),則方法返回 false。如果發生錯誤,方法將丟擲 Exception

◆ retrieve() [1/3]

bool cv::cudacodec::VideoReader::retrieve ( cuda::GpuMat & frame) const
inline

返回下一個影片幀。

引數
[輸出]frame影片幀。如果尚未呼叫 grab(),則此值將為空。
返回
如果未抓取任何幀,則為 false

該方法返回自上次呼叫 grab() 以來與當前影片源關聯的資料。如果不存在資料,則該方法返回 false,並且函式返回空影像。

◆ retrieve() [2/3]

bool cv::cudacodec::VideoReader::retrieve ( Mat & frame,
const size_t idx ) const
inline

返回之前抓取的編碼影片資料。

引數
[輸出]frame編碼影片資料。
idx確定影像內返回的資料。返回的資料可以是:
  • 如果可用,額外資料,idx = get(PROP_EXTRA_DATA_INDEX)。
  • 原始編碼資料包。要檢索包 i,idx = get(PROP_RAW_PACKAGES_BASE_INDEX) + i,其中 i < get(PROP_NUMBER_OF_RAW_PACKAGES_SINCE_LAST_GRAB)
返回
如果未抓取任何幀,則為 false

該方法返回自上次呼叫 grab() 或建立 VideoReader 以來與當前影片源關聯的資料。如果不存在資料,則該方法返回 false,並且函式返回空影像。

◆ retrieve() [3/3]

virtual bool cv::cudacodec::VideoReader::retrieve ( OutputArray frame,
const size_t idx = static_cast< size_t >(VideoReaderProps::PROP_DECODED_FRAME_IDX) ) const
純虛擬函式

返回之前抓取的影片資料。

引數
[輸出]frame返回的資料,其取決於提供的 idx。
idx確定影像內返回的資料。返回的資料可以是:
  • 解碼幀,idx = get(PROP_DECODED_FRAME_IDX)。
  • 如果可用,額外資料,idx = get(PROP_EXTRA_DATA_INDEX)。
  • 原始編碼資料包。要檢索包 i,idx = get(PROP_RAW_PACKAGES_BASE_INDEX) + i,其中 i < get(PROP_NUMBER_OF_RAW_PACKAGES_SINCE_LAST_GRAB)
返回
如果未抓取任何幀,則為 false

該方法返回自上次呼叫 grab() 或建立 VideoReader 以來與當前影片源關聯的資料。如果不存在資料,則該方法返回 false,並且函式返回空影像。

◆ set() [1/2]

virtual bool cv::cudacodec::VideoReader::set ( const ColorFormat colorFormat,
const BitDepth bitDepth = BitDepth::UNCHANGED,
const bool planar = false )
純虛擬函式

設定由 nextFrame()/retrieve() 返回的幀所需的 ColorFormat。

引數
colorFormatColorFormat 的值。
bitDepth請求的幀位深度。
planar平面顏色格式設定為 true,打包顏色格式設定為 false。
返回
true,除非 colorFormat 不支援。

◆ set() [2/2]

virtual bool cv::cudacodec::VideoReader::set ( const VideoReaderProps propertyId,
const double propertyVal )
純虛擬函式

VideoReader 中設定屬性。

引數
propertyId來自 cv::cudacodec::VideoReaderProps 的屬性識別符號 (例如 cv::cudacodec::VideoReaderProps::PROP_DECODED_FRAME_IDX, cv::cudacodec::VideoReaderProps::PROP_EXTRA_DATA_INDEX, ...)。
propertyVal屬性的值。
返回
如果屬性已設定,則為 true

◆ setVideoReaderProps()

bool cv::cudacodec::VideoReader::setVideoReaderProps ( const VideoReaderProps propertyId,
double propertyVal )
inline

此類的文件是從以下檔案生成的: