0

c ++/cliを使用して画像をバイト配列に送信する必要があります。画像は最初はIplimage形式です。

    int img_sz1 = img1->width * img1->height * img1->nChannels;
    array <Byte>^ hh1 = gcnew array<Byte> (img_sz1);
    Marshal::Copy( (IntPtr)img->imageData, hh1, 0, img_sz1 );

そしてそれはうまく働いていました。

jpegとして送信するためのエンコード手順を追加しました

    CvMat* buf1 = cvEncodeImage(".jpeg", img1, jpeg_params);
    img_sz1=buf1->width*buf1->height 
    Marshal::Copy( (IntPtr)buf1, hh1, 0, img_sz1 );

そして今、それはうまくコンパイルされますが、marshal:copy行でエラーが発生します

 An unhandled exception of type 'System.AccessViolationException' occurred in   
 mscorlib.dll. Additional information: Attempted to read or write protected memory. 

どんな助けでも大歓迎です。

4

1 に答える 1

1

の戻り値はcvEncodeImage、エンコードされた画像データを含む単一行の行列です。buf1->data現在コピーしているのは、構造体自体です。たとえば、幅フィールド、高さフィールドなどです。代わりに、からコピーする必要があると思います。

于 2012-07-13T02:26:08.287 に答える