如何在 emgu 中分离 RGB 图像的通道?

how to separate the channels of an RGB image in emgu?

我需要将 RGB 图像分成 3 个通道。换句话说,我需要一个代码来执行以下操作。

Image<Bgr, Byte> imgBgr = CvInvoke.Imread("Im.jpg").ToImage<Bgr, Byte>();
Mat blue = imgBgr.BlueChannel;
Mat green = imgBgr.GreenChannel;
Mat red = imgBgr.RedChannel;

谢谢!

有两种方法可以做到这一点。

  1. 使用imgBgr.Split()。它 returns 一个包含 3 个灰度图像的数组,每个图像代表原始图像的一个颜色通道。

  2. 使用imgBgr.Sub(color)。它将从原始图像中减去颜色。例如,如果你只想得到红色,去掉绿色和蓝色,imgBgr.Sub(new Rgb(0, 255, 255))等等。