将EmguCV图像转换为系统绘图位图

5
我正在使用emgucv库编写一个c#程序。我使用emgucv中的imagebox从网络摄像头中捕获图像。我想通过鼠标点击imagebox来使用bitmap.Getpixel()获取图像的颜色像素。然而,它出现了错误。错误是:无法隐式转换类型“Emgu.CV.IImage”为“System.Drawing.Bitmap”。请问有谁能给我解决这个问题的思路?
      Bitmap bitmap = newdetectimageBox.Image; //error

1
ToBitmap()Bitmap在EmguCV v4.4.0.4099|4077中缺失,所以我暂时使用v4.3.0.3890,目前它可以正常工作。 - axon
1
@axon,它们并没有丢失,而是被移动了。https://www.nuget.org/packages/Emgu.CV.Bitmap/ - VDWWD
3个回答

6
请使用此代码。
 Image<Bgr, Byte> ImageFrame = newdetectimageBox.Image ; //Capture the cam Image 
 Bitmap BmpInput = ImageFrame.ToBitmap(); //Convert the emgu Image to BitmapImage 

来自文档: // 备注: // 对于 Image<Gray, Byte> 和 Image<Bgr, Byte>,为了获得更好的性能,请考虑使用 Bitmap 属性。 - ephraim

2

以下是如何操作(图像数据不与位图共享)- 参见 Emgu 网站关于 IImage 的文档:

Bitmap bitmap = new Bitmap(newdetectimageBox.Image.Bitmap);

1
IImage接口包含Bitmap属性。 然而,如果您使用的是Image类,则应该使用ToBitmap方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接