C# 将位图转换为 Emgu Mat 总是失败

C# Converting Bitmap to Emgu Mat always fails

我正在尝试将位图转换为 mat 以供 OpenCV 使用。 但出于某种原因,他们不让我转换它。 我在 Stack 上找到了下面的代码,也在许多其他网站上看到了它。

这里有人知道为什么它不起作用吗?

无法将“System.Drawing.Bitmap”转换为“字节[]”。

注意一下,一开始是8张设置坐标的截图,保存为位图,需要转成mat。

请看一下嵌入的图像。

  public static Image<Bgr, byte> FromFile = new Image<Bgr, byte>("MyImage.jpg");
    Mat mat = FromFile.Mat; // Only a way to convert it succesfull,  
                            // but isnt the way i want to go.


    public static Bitmap skillQ;
    public static Image<Bgr, byte> FromBitmap = new Image<Bgr, byte>(skillQ).ToImage; 
    Mat mat2 = FromBitmap.Mat;         

   
    
    //public static Image<Bgr, byte> FromBitmap = new Image<Bgr, byte>(skillQ).ToImage;

此图片显示了错误消息。

首先,您不是将图像转换为 Mat,而是转换为 Image<>(有关差异和垫子是什么的更多信息 here)。

要将文件中的任何图像转换为 Mat,您只需使用以下命令:

  Mat fromFile = new Mat("test.bmp");

要将 Bitmap 转换为 Mat,您可以安装添加了一些扩展的 NuGet Emgu.CV.Bitmap,以便于转换为 Bitmap

Bitmap bitmapTest = fromFile.ToBitmap();
Mat fromBitmap = bitmapTest.ToMat();