从 Mat 的特定值创建掩码(在 EMGU 中)

Posted

技术标签:

【中文标题】从 Mat 的特定值创建掩码(在 EMGU 中)【英文标题】:Creat a mask from specific value of a Mat (in EMGU) 【发布时间】:2021-10-13 08:16:39 【问题描述】:

在 OpenCv C++ 中你可以这样做:

int nbrLabel = connectedComponentsWithStats(img, labelsMat, stats, centroids);
int selectedLabel = 4;
Mat mask = (labelsMat == selectedLabel);

mask 将是img 的大小,并存储每个像素是否等于selectedLabel

Emgu 没有用于 Mat 的 == 运算符。 最好的解决方案是什么?

【问题讨论】:

【参考方案1】:

我发现的唯一解决方案是使用 Image<> 类中的 InRange 并具有相同的 lowerhigher 值:

int nbrLabel = CvInvoke.ConnectedComponentsWithStats(img, labelsMat, stats, centroids);
Image<Gray, byte> labelsImg = labelsMat.ToImage<Gray, byte>();
int selectedLabel = 4;
Mat mask = labelsImg.InRange(new Gray(selectedLabel), new Gray(selectedLabel)).Mat

【讨论】:

以上是关于从 Mat 的特定值创建掩码(在 EMGU 中)的主要内容,如果未能解决你的问题,请参考以下文章

带有特定掩码的Matlab imcrop

Emgu.CV 4.2.0 图像转换方法不可用

Emgu CV 图像捕获使用 C#

使用掩码从特定坐标处的图像(2d数组)中提取像素值

OpenCV 对矩阵进行掩码操作

从身体提取掩码计算边界框