如何将位图转换为图像<bgr,byte =“”> </bgr,>

时间:2013-04-26 16:23:22

标签: c# .net opencv

我正在使用OpenCV库进行图像处理。

我想将System.Drawing.Bitmap转换为Image<Bgr, Byte>。我怎么能这样做?

6 个答案:

答案 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.4099Emgu.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()