OpenCV 4.11.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>

使用分水岭算法执行基于标记的图像分割。

该函数实现了分水岭算法的一种变体,即[190]中描述的基于非参数标记的分割算法。

在将图像传递给函数之前,您必须使用正数(>0)索引在图像标记中大致勾勒出所需的区域。因此,每个区域都表示为一个或多个具有像素值1、2、3等的连通分量。可以使用findContoursdrawContours(参见watershed.cpp演示)从二值掩码中检索此类标记。标记是未来图像区域的“种子”。markers中所有其他像素与其轮廓区域的关系未知,应由算法定义,应设置为0。在函数输出中,markers中的每个像素都设置为“种子”分量的值,或在区域边界设置为-1。

注意
并非任何两个相邻的连通分量都一定被分水岭边界(-1像素)分隔;例如,它们可以在传递给函数的初始标记图像中相互接触。
参数
image输入8位3通道图像。
markers输入/输出32位单通道标记图像(map)。它应该与image大小相同。
另请参见
findContours