OpenCV  4.10.0
开源计算机视觉
加载中...
搜索中...
没有匹配项
| 函数
图像分割

详细描述

cv::segmentation::IntelligentScissorsMB
 Intelligent Scissors 图像分割。更多...
 

函数

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 外部的像素标记为“明显背景”。仅当模式==GC_INIT_WITH_RECT 时使用此参数。
bgdModel背景模型的临时数组。在处理同一图像时不要对其进行修改。
fgdModel前景模型的临时数组。在处理同一图像时不要对其进行修改。
iterCount算法在返回结果前应执行的迭代次数。请注意,可以通过 mode==GC_INIT_WITH_MASK 或模式==GC_EVAL 进一步调用来优化结果。
模式操作模式,可为 GrabCutModes 之一

◆ watershed()

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

#include <opencv2/imgproc.hpp>

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

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

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

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