OpenCV 4.12.0
開源計算機視覺
載入中...
搜尋中...
無匹配項
影像分割

詳細描述

類  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)
 使用分水嶺演算法執行基於標記的影像分割。
 

函式文件

◆ 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 image,
InputOutputArray markers )
Python
cv.watershed(image, markers) -> markers

#include <opencv2/imgproc.hpp>

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

該函式實現了分水嶺的一種變體,非引數的基於標記的分割演算法,描述於 [193] 中。

在將影像傳遞給該函式之前,您必須在影像標記中使用正數 (>0) 索引大致勾勒出所需的區域。 因此,每個區域表示為一個或多個畫素值為 1、2、3 等的連線元件。 可以使用 findContoursdrawContours 從二進位制掩碼中檢索此類標記(請參見 watershed.cpp 演示)。 這些標記是未來影像區域的“種子”。 markers 中所有其他畫素,其與勾勒區域的關係未知,應由演算法定義,應設定為 0。 在函式輸出中,markers 中的每個畫素都設定為“種子”元件的值,或者設定為區域之間的邊界處 -1。

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