我正在使用OpenCV库进行图像处理。
我想将一个System.Drawing.Bitmap
对象转换为Image<Bgr, Byte>
对象。我应该如何实现这个转换呢?
Image
构造函数有一个 Bitmap
重载(假设您正在使用 Emgu CV 封装器,因为您已将其标记为 .NET
)。
Image<Bgr, Byte> myImage = new Image<Bgr, Byte>(myBitmap);
Emgu.CV.Bitmap 4.4.0.4099
和Emgu.CV.runtime.windows
来使用bitmap.ToImage<Bgr, byte>()
扩展方法。Image<Bgr, byte>
的构造函数不再接受 Bitmap
作为参数。我不得不在 Emgu 版本 4.3 中使用以下代码:
Image<Bgr, byte> emguImage = bitmap.ToImage<Bgr, byte>();
我在GitHub和补丁说明中找到了它,官方文档教程没有得到正确的更新。
关注此事的人:
您应该将依赖的dll添加到项目中,并将“复制到输出目录”属性更改为“始终复制”(添加->现有项),路径为Emgu\emgucv-windows-universal-cuda 2.9.0.1922\bin\x86。
在我的项目中添加了以下文件:opencv_core290.dll,opencv_highgui290.dll,opencv_ffmpeg290.dll,opencv_imageproc290.dll和cudart32_55.dll。
我正在使用Emgu 4.3.0.3890,当我将我的代码与团队集成时,遇到了同样的问题。 让我困扰的是这一行:
Image<Bgr, byte> img = bitmap.ToImage<Bgr, byte>();