我正在使用 OpenCV 库进行图像处理。
我想将 a 转换System.Drawing.Bitmap
为Image<Bgr, Byte>
. 我怎样才能做到这一点?
构造Image
函数有一个Bitmap
重载(假设你使用 Emgu CV 包装器,因为你已经标记了它.NET
)。
Image<Bgr, Byte> myImage = new Image<Bgr, Byte>(myBitmap);
的构造函数Image<Bgr, byte>
不再接受Bitmap
作为参数。我不得不对 Emgu 4.3 版使用以下代码:
Image<Bgr, byte> emguImage = bitmap.ToImage<Bgr, byte>();
我在 github 和补丁说明中找到了它。官方文档教程没有正确更新。
在 .NETEmgu.CV 4.4.0.4099
中,我必须安装Emgu.CV.Bitmap 4.4.0.4099
并Emgu.CV.runtime.windows
使用bitmap.ToImage<Bgr, byte>()
扩展方法。
我在 NetStandard 2.1 上使用 Emgu.CV 4.5.1.4349 需要安装 Emgu.CV.Bitmap 和 Emgu.CV.runtime.windows 才能将您的位图转换为 Image<Bgr, byte>
var myImage = myBitmap.ToImage<Bgr, byte>()
需要关注的人:您应该将依赖 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>();
我没有看到构建创建了两个名为 x86 和 x64 的新目录。当我发现它时,我将这两个目录添加到我的二进制文件的位置,并且一切正常。我没有时间去消除以查看这些目录中的哪个文件对此负责,但是嘿,它起作用了。:-)