0

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

私の質問は..最初のケースで、画像を a にロードして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);

同じエラーが発生します。=\

助けてください。

ありがとうございました。

[編集1]

問題は、*.dll が 1 つ見つからないことでした。EmguCV wiki のチュートリアルを見ると、いくつかの *.dll をデバッグ フォルダーにコピーすることをお勧めしていることがわかります。emgu のフォルダーには 22 個の *.dll があります。

4

1 に答える 1