将“Emgu.CV.Image<Emgu.CV.Structure.Bgr,byte>”转换为“System.Drawing.Image”
Posted
技术标签:
【中文标题】将“Emgu.CV.Image<Emgu.CV.Structure.Bgr,byte>”转换为“System.Drawing.Image”【英文标题】:Converting 'Emgu.CV.Image<Emgu.CV.Structure.Bgr,byte>' to 'System.Drawing.Image' 【发布时间】:2020-02-09 10:56:52 【问题描述】:我正在用 C# 进行人脸识别。 我该如何解决这个错误?
错误 4 无法将类型“Emgu.CV.Image”隐式转换为“System.Drawing.Image”
对于此代码:
cameraBox1.Image = Frame;
names = "" ;
User.Clear();
【问题讨论】:
Emgu.CV.Image
是否继承自 System.Drawing.Image
?如果是,那么很可能您只需要投射它。
【参考方案1】:
有两种方式:
a) 图像类Bitmap Property:
cameraBox1.Image = Frame.Bitmap;
围绕图像像素数据包裹位图。不涉及副本。
b) 图像类ToBitmap() method:
cameraBox1.Image = Frame.ToBitmap();
将图像中的像素数据复制到新的位图中。
您选择哪种方式取决于您的需求。 a) 速度更快,但创建的共享内存更难处理。
【讨论】:
【参考方案2】:System.Windows.Forms.PictureBox
like cameraBox1
不直接接受Emgu.CV.Image
。您必须将其转换为 System.Drawing.Image
像这样 cameraBox1.Image = Frame.ToBitmap();
【讨论】:
以上是关于将“Emgu.CV.Image<Emgu.CV.Structure.Bgr,byte>”转换为“System.Drawing.Image”的主要内容,如果未能解决你的问题,请参考以下文章
Javascript 将正则表达式 \\n 替换为 \n,将 \\t 替换为 \t,将 \\r 替换为 \r 等等