WPF中的位图类
我正在Winforms中使用Emgu Cv使用Kinect进行人脸识别。现在,我想转到WPF。但是,EmguCv库仅支持位图类 我可以在WPF中使用位图类(在Winforms中使用)吗?如果没有,是否有其他方法在WPF中使用Emgu cv和kinect 谢谢。不能直接用作WPF的图像源,因此您必须将其转换为 最好的方法是使用 您可以使用扩展方法:WPF中的位图类,wpf,bitmap,kinect,emgucv,Wpf,Bitmap,Kinect,Emgucv,我正在Winforms中使用Emgu Cv使用Kinect进行人脸识别。现在,我想转到WPF。但是,EmguCv库仅支持位图类 我可以在WPF中使用位图类(在Winforms中使用)吗?如果没有,是否有其他方法在WPF中使用Emgu cv和kinect 谢谢。不能直接用作WPF的图像源,因此您必须将其转换为 最好的方法是使用 您可以使用扩展方法: [DllImport("gdi32")] private static extern int DeleteObject(IntPtr o); pub
[DllImport("gdi32")]
private static extern int DeleteObject(IntPtr o);
public static BitmapSource ToBitmapSource(this System.Drawing.Bitmap source)
{
if (source == null)
{
throw new ArgumentNullException("source");
}
IntPtr ip = source.GetHbitmap();
try
{
return System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(ip,
IntPtr.Zero, Int32Rect.Empty,
System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());
}
finally
{
DeleteObject(ip);
}
}
请注意,您必须调用DeleteObject
,因为Bitmap.GetHbitmap()
泄漏GDI句柄(请参阅答案)
一旦有了BitmapSource
,就可以使用控件并通过设置属性来显示它
您可以在本文中阅读有关WPF映像的更多信息:您好,我是否应该添加对system.Drawing的引用?@RafikHaceb是的,请确保您的项目具有对
system.Drawing.dll
和PresentationCore.dll
的引用。顺便说一句,如果你觉得答案有帮助,你可以把它标记为“接受”。看见