如何用 CV_8UC1 类型保存 OpenCvSharp.Mat?

How save OpenCvSharp.Mat with CV_8UC1 type?

我写了下面的代码来加载任意类型的图片, 我将其转换为 CV_8UC1 类型,然后再次将其保存在文件中。

问题是当我加载保存的图像时,它不是 CV_8UC1 类型而是 CV_8UC3 类型。

我哪里错了?

    private void SaveTest()
    {
        var fileName = @"F:\src.png";
        Mat src = new Mat(fileName);
        var gray = src.CvtColor(ColorConversionCodes.BGR2GRAY);
        Debug.Assert(gray.Type() == MatType.CV_8UC1);

        var fileName2 = @"F:\temp.png";
        gray.ImWrite(fileName2);
        Mat test = new Mat(fileName2);
        Debug.Assert(test.Type() == MatType.CV_8UC1);
    }

只需更改为:

Mat test = new Mat(fileName2);

这个:

Mat test = new Mat(fileName2, ImreadModes.Unchanged);