Emgu CV - 将灰度图像组合成单个Bgr图像

时间:2017-12-07 16:58:07

标签: c# opencv emgucv

我尝试将灰度图像转换为Hsv图像,但将S和V通道设置为预设值。以下代码有效,但执行时间约为400毫秒。

public void ToHueImage(this Image<Gray, double> image, Image<Hsv, double> output)
{
        for (int i = 0; i < image.Width; i++)
        {
            for (int j = 0; j < image.Height; j++)
            {
                output.Data[j, i, 0] = image.Data[j, i, 0];
                output.Data[j, i, 1] = 255;
                output.Data[j, i, 2] = 255;
            }
        }           
    }
}

我希望能够在一次操作中为每个H,S和V平面分配单个灰度图像通道,以避免单独复制像素,这些都是

public void ToHueImage(this Image<Gray, double> image, Image<Hsv, double>     output)
{
    output.Data.H = image; 
    output.Data.S = WHITE_IMAGE; // These are static
    output.Data.V = WHITE_IMAGE; // These are static            
}

不使用字节复制等。我试图将执行时间推迟到约30ms左右。有没有直接的方法来实现这一目标?

1 个答案:

答案 0 :(得分:1)

感谢Miki排序:只需要使用CVInvoke调用opencv函数合并:

CvInvoke.Merge(new VectorOfMat(image.Mat, whiteImage.Mat, whiteImage.Mat), heatMap.Mat);