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

實現了 SEEDS (透過能量驅動取樣提取超畫素) 超畫素演算法的類,該演算法在 [285] 中描述。 更多...

#include <opencv2/ximgproc/seeds.hpp>

cv::ximgproc::SuperpixelSEEDS 的協作圖

公共成員函式

virtual ~SuperpixelSEEDS ()
 
virtual void getLabelContourMask (OutputArray image, bool thick_line=false)=0
 返回儲存在 SuperpixelSEEDS 物件中的超畫素分割的掩碼。
 
virtual void getLabels (OutputArray labels_out)=0
 返回影像的分割標籤。
 
virtual int getNumberOfSuperpixels ()=0
 計算儲存在 SuperpixelSEEDS 物件中給定影像的超畫素分割。
 
virtual void iterate (InputArray img, int num_iterations=4)=0
 使用 SuperpixelSEEDS 物件中初始化的引數計算給定影像的超畫素分割。
 
- 從 cv::Algorithm 繼承的公共成員函式
 Algorithm ()
 
virtual ~Algorithm ()
 
virtual void clear ()
 清除演算法狀態。
 
virtual bool empty () const
 如果 Algorithm 為空(例如,在最開始或讀取失敗後)則返回 true。
 
virtual String getDefaultName () const
 
virtual void read (const FileNode &fn)
 從檔案儲存中讀取演算法引數。
 
virtual void save (const String &filename) const
 
void write (const Ptr< FileStorage > &fs, const String &name=String()) const
 
virtual void write (FileStorage &fs) const
 將演算法引數儲存到檔案儲存中。
 
void write (FileStorage &fs, const String &name) const
 

額外的繼承成員

- 從 cv::Algorithm 繼承的靜態公共成員函式
template<typename _Tp >
static Ptr< _Tpload (const String &filename, const String &objname=String())
 從檔案中載入演算法。
 
template<typename _Tp >
static Ptr< _TploadFromString (const String &strModel, const String &objname=String())
 從字串載入演算法。
 
template<typename _Tp >
static Ptr< _Tpread (const FileNode &fn)
 從檔案節點讀取演算法。
 
- 從 cv::Algorithm 繼承的保護成員函式
void writeFormat (FileStorage &fs) const
 

詳細描述

實現了 SEEDS (透過能量驅動取樣提取超畫素) 超畫素演算法的類,該演算法在 [285] 中描述。

該演算法使用一種高效的爬山演算法來最佳化超畫素的能量函式,該函式基於顏色直方圖和一個可選的邊界項。能量函式鼓勵超畫素具有相同的顏色,如果邊界項被啟用,則超畫素具有平滑的邊界並且形狀相似。實際上,它從超畫素的規則網格開始,並移動邊界上的畫素或畫素塊以細化解決方案。該演算法使用單個 CPU 即時執行。

建構函式 & 解構函式文件

◆ ~SuperpixelSEEDS()

virtual cv::ximgproc::SuperpixelSEEDS::~SuperpixelSEEDS ( )
inlinevirtual

成員函式文件

◆ getLabelContourMask()

virtual void cv::ximgproc::SuperpixelSEEDS::getLabelContourMask ( OutputArray image,
bool thick_line = false )
純虛擬函式
Python
cv.ximgproc.SuperpixelSEEDS.getLabelContourMask([, image[, thick_line]]) -> image

返回儲存在 SuperpixelSEEDS 物件中的超畫素分割的掩碼。

引數
image返回值:CV_8UC1 影像掩碼,其中 -1 表示畫素是超畫素邊界,否則為 0。
thick_line如果為 false,則邊界只有一個畫素寬,否則邊界上的所有畫素都會被遮蔽。

該函式返回超畫素分割的邊界。

注意
  • (Python) 有關如何在影像中從網路攝像頭生成超畫素的演示可以在 opencv_source_code/samples/python2/seeds.py 中找到
    • (cpp) 有關如何在影像中從網路攝像頭生成超畫素的演示可以在 opencv_source_code/modules/ximgproc/samples/seeds.cpp 中找到。透過新增檔案影像作為命令列引數,將使用靜態影像而不是網路攝像頭。
    • 它將顯示一個視窗,其中包含來自網路攝像頭的影片,超畫素邊界以紅色標記(見下文)。使用空格鍵在不同的輸出模式之間切換。在視窗頂部有 4 個滑塊,使用者可以從中動態更改超畫素的數量、塊級別的數量、邊界先驗項的強度以修改形狀以及畫素級別的迭代次數。這對於使用引數並將其設定為使用者方便非常有用。在控制檯中,指示了演算法的幀速率。
image

◆ getLabels()

virtual void cv::ximgproc::SuperpixelSEEDS::getLabels ( OutputArray labels_out)
純虛擬函式
Python
cv.ximgproc.SuperpixelSEEDS.getLabels([, labels_out]) -> labels_out

返回影像的分割標籤。

每個標籤代表一個超畫素,每個畫素被分配給一個超畫素標籤。

引數
labels_out返回值:包含超畫素分割標籤的 CV_32UC1 整數陣列。標籤的範圍是 [0, getNumberOfSuperpixels()]。

該函式返回一個影像,其中包含超畫素分割的標籤。標籤的範圍是 [0, getNumberOfSuperpixels()]。

◆ getNumberOfSuperpixels()

virtual int cv::ximgproc::SuperpixelSEEDS::getNumberOfSuperpixels ( )
純虛擬函式
Python
cv.ximgproc.SuperpixelSEEDS.getNumberOfSuperpixels() -> retval

計算儲存在 SuperpixelSEEDS 物件中給定影像的超畫素分割。

該函式使用函式 createSuperpixelSEEDS() 初始化的引數計算影像的超畫素分割。

◆ iterate()

virtual void cv::ximgproc::SuperpixelSEEDS::iterate ( InputArray img,
int num_iterations = 4 )
純虛擬函式
Python
cv.ximgproc.SuperpixelSEEDS.iterate(img[, num_iterations]) ->

使用 SuperpixelSEEDS 物件中初始化的引數計算給定影像的超畫素分割。

可以為其他影像再次呼叫此函式,而無需使用 createSuperpixelSEEDS() 初始化演算法。這節省了為演算法的所有結構分配記憶體的計算成本。

引數
img輸入影像。支援的格式:CV_8U、CV_16U、CV_32F。影像大小和通道數必須與使用函式 createSuperpixelSEEDS() 初始化的影像大小和通道數匹配。它應該是 HSV 或 Lab 顏色空間。Lab 效果更好,但速度也更慢。
num_iterations畫素級別迭代次數。較高的數字會改善結果。

該函式使用函式 createSuperpixelSEEDS() 初始化的引數計算影像的超畫素分割。該演算法從超畫素網格開始,然後透過提出從大到小的位於邊界上的畫素塊的更新來細化邊界,最後提出畫素更新。可以在下面看到一個說明性示例。

image

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