c# - 如何使用 CV_8UC1 类型保存 OpenCvSharp.Mat?

标签 c# .net vb.net opencv

我写了下面的代码来加载任意类型的图片, 我将其转换为 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);

关于c# - 如何使用 CV_8UC1 类型保存 OpenCvSharp.Mat?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48619633/

相关文章:

wpf - 不能在两个线程中同时使用 Window 控件

java - VB.Net 服务器与 Java 客户端(Socket)发送和接收文本

c# - 加载 WebView Xamarin 表单时的事件指示器

javascript - ASP.NET 如何在客户端引发事件?

c# - 反序列化 XML 数组

c# - 无法将类型 'bool?' 隐式转换为 'bool' 。存在显式转换(您是否缺少转换?)

.net - 在 Azure 上使用 Serilog 过滤身份验证消息

mysql - 如何在VB中将用户输入的用户名和密码存储到phpmyadmin?

c# - C# 中的 foreach 和带有 List<T> 的传统 for 循环

c# - 换行符在 MailMessage 的正文中不起作用