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