首页 > 解决方案 > Emgu.CV.InRange 返回黑色图像

问题描述

我得到了一张图片并执行了以下功能:

Emgu.CV.CvInvoke.InRange(Img, new Emgu.CV.ScalarArray(new Emgu.CV.Structure.MCvScalar((byte)0, (byte)0, (byte)0)), new Emgu.CV.ScalarArray(new Emgu.CV.Structure.MCvScalar((byte)255, (byte)255, (byte)255)), Img);

如果我不执行显式转换为字节,则没有任何变化。

该函数返回一个黑色图像,但我不明白,因为 0 到 255 的范围应该包括所有颜色。如果我评论该功能,图像是正确的图像,我最初加载。

问候,扬

标签: opencvemgucv

解决方案


好的,我知道了。由于该 Mat 对象有四个通道,因此上限和下限的数组也需要有四个项目。

Emgu.CV.CvInvoke.InRange(Img, new Emgu.CV.ScalarArray(new Emgu.CV.Structure.MCvScalar((byte)0, (byte)0, (byte)0), (byte)0)), new Emgu.CV.ScalarArray(new Emgu.CV.Structure.MCvScalar((byte)255, (byte)255, (byte)255, (byte)255)), Img);

推荐阅读