SuperpixelSEEDS 类
- java.lang.Object
-
- org.opencv.core.Algorithm
-
- org.opencv.ximgproc.SuperpixelSEEDS
-
public class SuperpixelSEEDS extends Algorithm
此类实现了SEEDS(通过能量驱动采样提取的超像素)超像素算法,如CITE: VBRV14中所述。该算法使用高效的爬山算法来优化超像素的能量函数,该函数基于颜色直方图和可选的边界项。能量函数鼓励超像素具有相同的颜色,如果激活边界项,则超像素具有平滑的边界并且形状相似。在实践中,它从超像素的规则网格开始,并移动边界处的像素或像素块以细化解决方案。该算法使用单个CPU实时运行。
-
-
构造函数摘要
构造函数 修饰符 构造函数 描述 protected
SuperpixelSEEDS(long addr)
-
方法摘要
所有方法 静态方法 实例方法 具体方法 修饰符和类型 方法 描述 static SuperpixelSEEDS
__fromPtr__(long addr)
protected void
finalize()
void
getLabelContourMask(Mat image)
返回存储在 SuperpixelSEEDS 对象中的超像素分割掩码。void
getLabelContourMask(Mat image, boolean thick_line)
返回存储在 SuperpixelSEEDS 对象中的超像素分割掩码。void
getLabels(Mat labels_out)
返回图像的分割标签。int
getNumberOfSuperpixels()
计算存储在 SuperpixelSEEDS 对象中的给定图像上的超像素分割。void
iterate(Mat img)
使用 SuperpixelSEEDS 对象中初始化的参数计算给定图像上的超像素分割。void
iterate(Mat img, int num_iterations)
使用 SuperpixelSEEDS 对象中初始化的参数计算给定图像上的超像素分割。-
继承自类 org.opencv.core.Algorithm 的方法
clear, empty, getDefaultName, getNativeObjAddr, save
-
-
-
-
方法详情
-
__fromPtr__
public static SuperpixelSEEDS __fromPtr__(long addr)
-
getNumberOfSuperpixels
public int getNumberOfSuperpixels()
计算存储在 SuperpixelSEEDS 对象中的给定图像上的超像素分割。该函数使用 createSuperpixelSEEDS() 函数初始化的参数计算图像的超像素分割。- 返回
- 自动生成
-
iterate
public void iterate(Mat img, int num_iterations)
使用 SuperpixelSEEDS 对象中初始化的参数计算给定图像上的超像素分割。此函数可以再次用于其他图像,无需使用 createSuperpixelSEEDS() 函数初始化算法。这节省了为算法的所有结构分配内存的计算成本。- 参数
img
- 输入图像。支持的格式:CV_8U、CV_16U、CV_32F。图像大小和通道数必须与使用 createSuperpixelSEEDS() 函数初始化的图像大小和通道数匹配。它应该在HSV或Lab颜色空间中。Lab稍微好一些,但也更慢。num_iterations
- 像素级迭代次数。数字越高,结果越好。该函数使用 createSuperpixelSEEDS() 函数初始化的参数计算图像的超像素分割。算法从超像素网格开始,然后通过建议位于边界处的像素块的更新(从大到小)来细化边界,最后建议像素更新。下面可以看到一个说明性示例。![image](pics/superpixels_blocks2.png)
-
iterate
public void iterate(Mat img)
使用 SuperpixelSEEDS 对象中初始化的参数计算给定图像上的超像素分割。此函数可以再次用于其他图像,无需使用 createSuperpixelSEEDS() 函数初始化算法。这节省了为算法的所有结构分配内存的计算成本。- 参数
img
- 输入图像。支持的格式:CV_8U、CV_16U、CV_32F。图像大小和通道数必须与使用 createSuperpixelSEEDS() 函数初始化的图像大小和通道数匹配。它应该在HSV或Lab颜色空间中。Lab稍微好一些,但也更慢。该函数使用 createSuperpixelSEEDS() 函数初始化的参数计算图像的超像素分割。算法从超像素网格开始,然后通过建议位于边界处的像素块的更新(从大到小)来细化边界,最后建议像素更新。下面可以看到一个说明性示例。![image](pics/superpixels_blocks2.png)
-
getLabels
public void getLabels(Mat labels_out)
返回图像的分割标签。每个标签代表一个超像素,每个像素都分配给一个超像素标签。- 参数
labels_out
- 返回:包含超像素分割标签的 CV_32UC1 整数数组。标签范围为 [0, getNumberOfSuperpixels()]。该函数返回一个包含超像素分割标签的图像。标签范围为 [0, getNumberOfSuperpixels()]。
-
getLabelContourMask
public void getLabelContourMask(Mat image, boolean thick_line)
返回存储在 SuperpixelSEEDS 对象中的超像素分割掩码。- 参数
image
- 返回:CV_8UC1 图像掩码,其中 -1 表示像素是超像素边界,否则为 0。thick_line
- 如果为 false,则边界仅为一个像素宽,否则边界上的所有像素都被屏蔽。该函数返回超像素分割的边界。注意:- (Python) 如何从网络摄像头中的图像生成超像素的演示可以在 opencv_source_code/samples/python2/seeds.py 中找到。
- (cpp) 如何从网络摄像头中的图像生成超像素的演示可以在 opencv_source_code/modules/ximgproc/samples/seeds.cpp 中找到。通过添加文件图像作为命令行参数,将使用静态图像而不是网络摄像头。
- 它将显示一个窗口,其中包含来自网络摄像头的视频,并用红色标记超像素边界(见下文)。使用空格键可在不同的输出模式之间切换。窗口顶部有 4 个滑块,用户可以动态更改超像素数量、块级别数、边界先验项的强度(以修改形状)以及像素级迭代次数。这对于使用参数并根据用户方便设置参数非常有用。控制台中会显示算法的帧速率。
- (Python) 如何从网络摄像头中的图像生成超像素的演示可以在 opencv_source_code/samples/python2/seeds.py 中找到。
-
getLabelContourMask
public void getLabelContourMask(Mat image)
返回存储在 SuperpixelSEEDS 对象中的超像素分割掩码。- 参数
image
- 返回值:CV_8UC1图像掩码,其中-1表示像素是超像素边界,否则为0。函数返回超像素分割的边界。注意:- (Python) 如何从网络摄像头中的图像生成超像素的演示可以在 opencv_source_code/samples/python2/seeds.py 中找到。
- (cpp) 如何从网络摄像头中的图像生成超像素的演示可以在 opencv_source_code/modules/ximgproc/samples/seeds.cpp 中找到。通过添加文件图像作为命令行参数,将使用静态图像而不是网络摄像头。
- 它将显示一个窗口,其中包含来自网络摄像头的视频,并用红色标记超像素边界(见下文)。使用空格键可在不同的输出模式之间切换。窗口顶部有 4 个滑块,用户可以动态更改超像素数量、块级别数、边界先验项的强度(以修改形状)以及像素级迭代次数。这对于使用参数并根据用户方便设置参数非常有用。控制台中会显示算法的帧速率。
- (Python) 如何从网络摄像头中的图像生成超像素的演示可以在 opencv_source_code/samples/python2/seeds.py 中找到。
-
-