我正在为一个涉及 C#、Kinect 和 Emgu CV 的学校项目工作。我对 C# 和 Emgu CV 都很陌生,所以我可能会遗漏一些简单的东西。我想要做的是使用来自 Kinect 的图像作为 Emgu CV 图像进行处理,但我不断收到错误消息。出现的错误是“TypeInitializationException 未处理”和“'Emgu.Cv.CVInvoke' 的类型初始化程序引发了异常。”
我用来从 Kinect 获取图像的代码是:
using (ColorImageFrame colorFrame = e.OpenColorImageFrame())
{
if (colorFrame != null)
{
byte[] pixels = new byte[colorFrame.PixelDataLength];
colorFrame.CopyPixelDataTo(pixels);
int stride = colorFrame.Width * 4;
BitmapSource color = BitmapImage.Create(colorFrame.Width, colorFrame.Height,96, 96, PixelFormats.Bgr32, null, pixels, stride);
liveFeed.Source = color;
EmguCVProcessing(color);
}
else
{
return;
}
}
我还发现了一些用于将 BitmapSource 转换为 Bitmap 的代码:Is there a good way to convert between BitmapSource and Bitmap?
不工作的代码如下:
void EmguCVProcessing(BitmapSource bitmap)
{
Bitmap bmp = GetBitmap(bitmap);
Image<Bgr, Byte> imgLiveFeed = new Image<Bgr, Byte>(bmp);
}
据我所知,这应该将位图转换为 Emgu CV 图像,但由于某种原因它不是。
只是更多信息:
InnerException:确保文件图像是有效的托管程序集。
InnerException:确保您为程序集提供了正确的文件路径。
我最好的猜测是该程序使用不同版本的 .NET Framework,但我不确定如何解决此问题。