2

現在、Canon EDSDKに取り組んでいます。ライブビュー画像が非常に遅くなります (毎秒 5 画像)。どうすればもっと速くできますか?

これは、画像へのポインタを取得するための私のコードです:

    uint _err = EDSDK.EDS_ERR_OK;
    IntPtr imageRef = IntPtr.Zero;
    IntPtr streamRef = IntPtr.Zero;
    IntPtr streamPtr = IntPtr.Zero;
    単位の長さ = 0;

    _err = EDSDK.EdsCreateMemoryStream(0, out streamRef);
    もし (EDSDK.EDS_ERR_OK == _err)
      _err = EDSDK.EdsCreateEvfImageRef(streamRef, out imageRef);

    もし (EDSDK.EDS_ERR_OK == _err)
      _err = EDSDK.EdsDownloadEvfImage(_camera, imageRef);          

    もし (EDSDK.EDS_ERR_OK == _err)
    {
      // 画像を表示
      _err = EDSDK.EdsGetPointer(streamRef, out streamPtr);
      もし (EDSDK.EDS_ERR_OK == _err)
        _err = EDSDK.EdsGetLength(streamRef, out Length);
    }   

次に、画像をビットマップにロードしますが、非常に遅いです。私のコード:

    バイト[] b = 新しいバイト[長さ];
    Marshal.Copy(streamPtr, b, 0, (int)Length);
    使用 ( MemoryStream ac = 新しい MemoryStream(b))
    {
      img = (ビットマップ)Image.FromStream(ac);
      ac.Close();
    }

4

2 に答える 2

1

libjpeg-turbo、ここで入手可能http://libjpeg-turbo.virtualgl.org/はリアルタイムでデコードします

于 2013-02-21T20:13:15.720 に答える
0

EdsGetImage メソッドを使用して、メモリ ストリームから画像データを抽出してみましたか?

このメソッドを使用するには、(EdsCreateImageRef メソッドを使用して) EdsDownloadEvf メソッドを使用した後、メモリ ストリームから追加のイメージ参照を作成する必要があります。その後、この画像参照を EdsGetImage メソッドで使用して、圧縮されていない画像データを抽出できます。

于 2013-01-31T10:08:08.897 に答える