C# 转换位图时出错
我正在使用EmguCV创建直方图,为此,我需要一个C# 转换位图时出错,c#,wpf,bitmap,emgucv,C#,Wpf,Bitmap,Emgucv,我正在使用EmguCV创建直方图,为此,我需要一个位图来创建图像 当我将图像从文件加载到位图变量时,如下所示: Bitmap bmpImg=新位图(文件路径) Image emguImg=新图像(bmpImg) 图像创建工作正常,我能够显示图像。但是,我需要从我相机的结构中创建此图像image emguImg public struct tFrame { public IntPtr AncillaryBuffer; public uint AncillaryBufferSize;
位图
来创建图像
当我将图像从文件加载到位图变量时,如下所示:
Bitmap bmpImg=新位图(文件路径)代码>
Image emguImg=新图像(bmpImg)代码>
图像创建工作正常,我能够显示图像。但是,我需要从我相机的结构中创建此图像image emguImg
public struct tFrame
{
public IntPtr AncillaryBuffer;
public uint AncillaryBufferSize;
public uint AncillarySize;
public tBayerPattern BayerPattern;
public uint BitDepth;
public tFrameCtx Context;
public tImageFormat Format;
public uint FrameCount;
public uint Height;
public IntPtr ImageBuffer;
public uint ImageBufferSize;
public uint ImageSize;
public uint RegionX;
public uint RegionY;
public tErr Status;
public uint TimestampHi;
public uint TimestampLo;
public uint Width;
}
当我像这样创建位图时:
Bitmap bmpImg=新位图((int)frame.Width,(int)frame.Height,步长,pxFormat,frame.ImageBuffer)代码>
我可以在将此图像转换为BitmapSource后显示它,因此我假设直到现在我的代码都是正确的
当我尝试这样做时:
Image emguImg=Image(bmpImg)代码>
我从Emgu.CV.CvInvoke
我的问题是。。为什么在第一种情况下,当我将图像加载到位图
并将此图像传递到图像
时,一切正常,但当我从结构创建位图
并将其传递到图像
时,会出现此异常
我还尝试过这样创建我的图像:
Image emguImg=新图像((int)frame.Width,(int)frame.Height,stride,frame.ImageBuffer)代码>
同样的错误也会发生=\
请帮忙
多谢各位
[edit1]
问题是缺少一个*.dll。
如果您查看EmguCV wiki上的教程,您会发现他们建议您将一些*.dll复制到调试文件夹中。我做了很多,emgu的文件夹里有22个*.dll,我复制了21个。。问题是缺少*.dll
一招。。因此,如果这一行出现异常,请不要忘记复制那些*.dll:
Image<Gray, Byte> emguImg = new Image<Gray, byte>((int)frame.Width, (int)frame.Height, stride, frame.ImageBuffer);
Image emguImg=新图像((int)frame.Width,(int)frame.Height,stride,frame.ImageBuffer);
frame.Width
、frame.Height
和stride
的值是多少。有些系统使用负高度或负步幅来区分自上而下和自下而上的像素顺序,您的库可能对此不满意
或者这可能是一个对齐问题
在调试器中设置一个断点,并准确查看您要求库执行的操作。什么异常?可能您的库只支持某些像素格式,或者需要对齐,或者类似的东西。@Probst:那么,问题出在哪里?你是怎么修好的?提供信息,以便这个问题也能帮助未来的程序员。