OpenCV 4.13.0
開源計算機視覺庫 (Open Source Computer Vision)
正在載入...
正在搜尋...
未找到匹配項
影像分割

詳細說明

類  cv::segmentation::IntelligentScissorsMB
 智慧剪刀影像分割。更多...
 

函式

void cv::grabCut (InputArray img, InputOutputArray mask, Rect rect, InputOutputArray bgdModel, InputOutputArray fgdModel, int iterCount, int mode=GC_EVAL)
 執行 GrabCut 演算法。
 
void cv::watershed (InputArray image, InputOutputArray markers)
 使用分水嶺演算法執行基於標記的影像分割。
 

函式文件 (Function Documentation)

◆ grabCut()

void cv::grabCut ( InputArray img,
InputOutputArray mask,
Rect rect,
InputOutputArray bgdModel,
InputOutputArray fgdModel,
int iterCount,
int mode = GC_EVAL )
Python
cv.grabCut(img, mask, rect, bgdModel, fgdModel, iterCount[, mode]) -> mask, bgdModel, fgdModel

#include <opencv2/imgproc.hpp>

執行 GrabCut 演算法。

該函式實現了 GrabCut 影像分割演算法

引數
img輸入 8 位 3 通道影像。
mask輸入/輸出 8 位單通道掩碼。當 mode 設定為 GC_INIT_WITH_RECT 時,該掩碼由函式初始化。其元素可能具有 GrabCutClasses 的其中一種。
rect包含待分割物件的 ROI。ROI 之外的畫素被標記為“明顯背景”。該引數僅在 mode==GC_INIT_WITH_RECT 時使用。
bgdModel背景模型的臨時陣列。在處理同一影像時,請勿修改它。
fgdModel前景模型的臨時陣列。在處理同一影像時,請勿修改它。
iterCount演算法在返回結果之前應進行的迭代次數。請注意,結果可以透過進一步呼叫 mode==GC_INIT_WITH_MASK 或 mode==GC_EVAL 來完善。
mode操作模式,可以是 GrabCutModes 的其中一種。

◆ watershed()

void cv::watershed ( InputArray 影像,
InputOutputArray markers )
Python
cv.watershed(image, markers) -> markers

#include <opencv2/imgproc.hpp>

使用分水嶺演算法執行基於標記的影像分割。

該函式實現了 watershed 的一種變體,即非引數的基於標記的分割演算法,詳見 [196]

在將影像傳遞給函式之前,您必須在影像標記中粗略地勾勒出所需的區域,並使用正整數(>0)對其進行標記。因此,每個區域由一個或多個連通分量表示,其畫素值為 1、2、3,依此類推。此類標記可以從二值掩碼中檢索,方法是使用 findContoursdrawContours(請參閱 watershed.cpp 示例)。標記是未來影像區域的“種子”。標記中所有與已勾勒區域關係未知且應由演算法定義的其他畫素應設定為 0。在函式輸出中,markers 中的每個畫素都將設定為“種子”分量的值,或者在區域邊界處設定為 -1。

注意
任何兩個相鄰的連通分量不一定被分水嶺邊界(-1 畫素)分隔;例如,它們可以在傳遞給函式的初始標記影像中相互接觸。
引數
影像輸入 8 位 3 通道影像。
markers輸入/輸出 32 位單通道影像(對映)標記。它應該與 image 具有相同的大小。
另請參閱
findContours