0

私のプロジェクトではEmguCVlibを使用したいのですが、EmguCVの関数はBitmapオブジェクトを処理できないため、Bitmapを他のタイプに変換する必要があります。Intptrを選択しますが、コーディング方法がわかりません。コードは次のように私のプロジェクトから抽象化されています。

Bitmap bmp = new Bitmap(e.width, e.height,
    System.Drawing.Imaging.PixelFormat.Format24bppRgb);
System.Drawing.Imaging.BitmapData data = 
    bmp.LockBits(new Rectangle(0, 0, e.width, e.height), 
        System.Drawing.Imaging.ImageLockMode.ReadWrite, 
        System.Drawing.Imaging.PixelFormat.Format24bppRgb);
int dataLength = e.width * e.height * 3;
Win32.memcpy(data.Scan0, (IntPtr)e.data, (uint)dataLength);
convertBitmapToIntptr(bmp);

この関数でどのようにコーディングできますconvertBitmapToIntptr(bmp)か?

4

2 に答える 2

1

これは古い質問かもしれませんが、EmguCV を使用している場合、次の例のようにビットマップから IntPtr への変換を行うことができます (バージョン 2.4.2 以降):

Bitmap bitmap = new Bitmap("pathToBitmapFile");

Image<Bgr,byte> image = new Image<Bgr,byte>(bitmap);

IntPtr = image.Ptr;   

EmguCVのドキュメントを参照してください

于 2013-03-14T15:36:26.557 に答える
0

これをクラスでラップしたい....

私はこれを行い、それを「FastBitmap」と呼びました。コンストラクターでロックし、ptr を取得し、ptr を操作するメソッドを追加できます。

于 2010-06-03T01:18:10.933 に答える