2012-02-23 17 views
0

opencvを使用してディスクからイメージを読み取るネイティブライブラリの間にあるC++/Cli interopレイヤーを作成しています。 interopレイヤは、イメージをマネージビットマップに変換し、それをc#uiに送信する必要があります。
実際の変換はメモリをコピーすることで簡単です。問題は、このアプリケーションでは多数の大きな画像を処理する必要があるため、非常にリソースが集中することです。このため、私は画像の2つのコピーをメモリに保存することを避け、ポインタを管理されたビットマップの画像データに割り当てて、opencv画像データを指すようにしたいと考えています。
私は、管理ビットマップをロックし、Scan0ポインタをopencvポインタに割り当て、StrideがopencvイメージのwidthStep(通常のIplImageを使用しています)に設定されていることを確認しましたが、これを行うと、出てくる画像は完全に黒です。
ネイティブイメージデータをコピーしないで管理ビットマップを作成する方法はありますか?マネージドビットマップとメモリ管理

おかげで、
マックス

答えて

0

http://msdn.microsoft.com/en-us/library/zy1a2d14.aspx

は、OpenCVの画像ありえないが、しかし範囲の外に出ることを確認してください参照、これを行うことができます提供コンストラクタがあるが判明します!