我正在使用EmguCV創建直方圖,爲此,我需要Bitmap
來創建Image<Gray, Byte>
。轉換時發生位圖錯誤
當我從一個文件中的影像加載這樣的位圖變量:
Bitmap bmpImg = new Bitmap(filepath);
Image<Gray, Byte> emguImg = new Image<Gray, byte>(bmpImg);
圖像創建工作正常,我能夠顯示圖像。但是,我需要從來自相機的結構創建此圖像Image<Gray, Byte> 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 = new Bitmap((int)frame.Width, (int)frame.Height, stride, pxFormat, frame.ImageBuffer);
我能夠將其轉換爲的BitmapSource後顯示此圖像,所以我假設,直到此時我的代碼對。
當我嘗試這樣做:
Image<Gray, Byte> emguImg = Image<Gray, byte>(bmpImg);
我得到一個錯誤,從Emgu.CV.CvInvoke
我的問題的例外是..爲什麼在第一種情況下,當我加載圖像Bitmap
並將此圖像傳遞給Image<Gray, Byte>
每件事情都能正常工作,但是當我從我的結構中創建Bitmap
並將其傳遞給Image<Gray, Byte>
時,我得到此異常?
我也嘗試創建自己的形象是這樣的:
Image<Gray, Byte> emguImg = new Image<Gray, byte>((int)frame.Width, (int)frame.Height, stride, frame.ImageBuffer);
發生同樣的錯誤。 = \
請幫忙。
謝謝。
[EDIT1]
問題是一個* .DLL失蹤。 如果你看看EmguCV wiki上的教程,你會看到他們建議你將一些* .dll文件複製到debug文件夾中。那麼我做了更多,在emgu的文件夾中有22 * .dlls,我複製了21 ..並且問題是缺少* .dll one noob move ..所以不要忘記複製那些* .dlls
什麼異常?可能你的庫只支持某些像素格式,或者需要對齊,或者類似的東西。 –