Emgu.CV 4.2.0 图像转换方法不可用

Posted

技术标签:

【中文标题】Emgu.CV 4.2.0 图像转换方法不可用【英文标题】:Emgu.CV 4.2.0 image conversion methods not available 【发布时间】:2020-05-20 16:19:18 【问题描述】:

我有一个 .Net Standard 2.0 项目,其中最新版本的 Emgu.CV - 4.2.0.3636 通过 Nuget 包安装。我还有 System.Drawing.Common 包,它支持位图。我需要将 Mat 转换为位图并从现有位图创建 Mats 的可能性。以前 Mats 有 Bitmap 属性,并且有一个 Image 的构造函数,例如接受 Bitmap 作为参数。从我在 Emgu.CV 4.2.0 版本的发行说明中看到的 - 这些已被位图的 ToMat() 扩展方法和 Mats/Images 的 AsBitmap() 方法取代。但是对我来说这两种方法都不可用。

官网发布说明说:

已添加到 Emgu.CV.UI nuget 包(或 dll 文件)中

同时,我在 nuget 中看不到 Emgu.CV.UI 包,只有我已经安装的 Emgu.CV 包。

我还有什么遗漏的?

【问题讨论】:

【参考方案1】:

从 Emgu 4.4.0 开始,位图部分位于第三个 (NuGet) 包 Emgu.CV.Bitmap 中,它解决了这个问题(以前在 Emgu.CV.runtime.windows 中,4.3.0 及之前版本)。

所以你需要三个包:

Emgu.CV(当然) Emgu.CV.runtime.windows 现在,Emgu.CV.Bitmap

【讨论】:

【参考方案2】:

您还需要为您的操作系统添加 Emgu.Cv 运行时包。因此,对于 Windows,您需要添加 Emgu.Cv.Runtime.Windows

【讨论】:

我必须建议 EMGU 更新他们关于版本更改的文档,这是需要的包,而不是“Emgu.CV.UI” 是的。一旦安装运行时包,图像可以通过 Image.AsBitmap() 转换为位图【参考方案3】:

即使我有 Emgu.CV.runtime.windows 包,我也遇到了同样的问题。

为了访问 ToBitmap() 方法,我确实需要 Emgu.CV.UI.dll

看起来它不包含在运行时或 Emgu.CV nuget 包中。

我是去github页面,下载this,它在bin文件夹中构建了UI.dll(或自己构建项目)

引用该 dll,您就可以访问这些方法。希望将来他们可以通过 nuget 提供它

【讨论】:

我设法让 ToBitmap() 和 AsBitmap() 使用这两个 nuget 包在 .Net Core 3.1 项目中工作:Emgu.CV.runtime.windows 和 Emgu.CV.UI

以上是关于Emgu.CV 4.2.0 图像转换方法不可用的主要内容,如果未能解决你的问题,请参考以下文章

如何将轮廓层次结构从 python openCV 转换为 emgu cv 以查找封闭轮廓

将“Emgu.CV.Image<Emgu.CV.Structure.Bgr,byte>”转换为“System.Drawing.Image”

OpenCV (Emgu.CV)——用 alpha 合成图像

EMGU CV SURF 图像匹配

Emgu CV 图像捕获使用 C#

来自 Emgu CV(或 OpenCV)中多边形集的 Voronoi 图