我正在使用OpenCV库进行图像处理。
我想将System.Drawing.Bitmap
转换为Image<Bgr, Byte>
。我怎么能这样做?
答案 0 :(得分:17)
Image
构造函数有Bitmap
重载(假设您使用了Emgu CV包装器,因为您已将其标记为.NET
)。
Image<Bgr, Byte> myImage = new Image<Bgr, Byte>(myBitmap);
答案 1 :(得分:5)
Image<Bgr, byte>
的构造函数不再接受Bitmap
作为参数。对于Emgu版本4.3,我必须使用以下代码:
Image<Bgr, byte> emguImage = bitmap.ToImage<Bgr, byte>();
我在github和补丁说明中找到了它。官方文档教程未正确更新。
答案 2 :(得分:0)
要关注的人: 您应该从Emgu \ emgucv-windows-universal-cuda 2.9.0.1922 \ bin \ x86
中将依赖项dll添加到项目中,并将“复制到输出目录”属性更改为“总是复制”(添加->现有项)在我的项目中添加:opencv_core290.dll,opencv_highgui290.dll,opencv_ffmpeg290.dll,opencv_imageproc290.dll和cudart32_55.dll
来自:The type initializer for 'Emgu.CV.CvInvoke' threw an exception
答案 3 :(得分:0)
我使用的是Emgu 4.3.0.3890,我遇到了与我的团队集成代码的相同问题。 给我麻烦的那一行是:
Image<Bgr, byte> img = bitmap.ToImage<Bgr, byte>();
我没有看到该版本创建了两个名为x86和x64的新目录。 当我发现它时,我将这两个目录添加到了二进制文件的位置,并且一切正常。 我没有时间去消除查看这些目录中的哪个文件对此负责,但是,嘿,它起作用了。 :-)
答案 4 :(得分:0)
在.NET Emgu.CV 4.4.0.4099
中,我必须安装Emgu.CV.Bitmap 4.4.0.4099
和Emgu.CV.runtime.windows
才能使用bitmap.ToImage<Bgr, byte>()
扩展方法。
答案 5 :(得分:0)
我在 NetStandard 2.1 上使用 Emgu.CV 4.5.1.4349
需要安装 Emgu.CV.Bitmap 和 Emgu.CV.runtime.windows 才能将您的 Bitmap 转换为 Image
var myImage = myBitmap.ToImage