2

OpenCV で画像を取得し、XML に書き込み、XML から読み取り、WPF アプリケーションの画像コントロールに表示するシステムを作成しようとしています。

私が抱えている問題は、.NET クラス (BitmapImage など) がバイト配列から画像を処理する方法がよくわからないことです。私はいくつかの方法を試しましたが、さまざまなエラーが発生しました.必要な場合を除いて投稿するには多すぎます.

これに関して誰かが私を正しい方向に向けることができるかどうか疑問に思っていましたか? 私が知りたいのは、データをイメージ コントロールに表示するために、データを .NET オブジェクトにどのように提示する必要があるかということです。

よろしくお願いいたします。

編集:私がする必要があるのは、XMLをバイト配列に変換し、それをフォーマットの定義とともに使用して、BitmapImageオブジェクトまたは同等のものをインスタンス化し、Imageコントロールのソースとして使用することです。よくわからないのは、これを行う方法です。

4

3 に答える 3

2

ファイルを画像として保存するために使用int cvSaveImage(const char* filename, const CvArr* image) します。画像形式は、ファイル名の拡張子に基づいて選択されます。

XML画像ファイルとして直接保存できる場合は、保存する必要はありません。

.NET クラスには Image が必要です。それだけです。

ノート:

赤、緑、青の値をカンマ区切りの文字列として保存したい場合は、非常に非効率的です。代わりに保存してBase64ください。その後、それをバイトに変換して、任意の .NET イメージ クラスに渡すことができます。また、.NETImageConverterクラスはとても役に立ちます。

于 2012-07-22T03:42:58.283 に答える
0

問題は、(おそらく)XMLデータを書き込む前にBase64でエンコードしていないことであることがわかりました。したがって、解決策は、XMLに書き込む前にデータをBase64エンコードし、反対側でBase64デコードし、データをバイト配列として読み取り、それを使用してMemoryStream、次にBitmapImageオブジェクトをインスタンス化することです。

皆様のご協力に感謝いたします。

于 2012-07-22T08:32:06.683 に答える
0

以下を使用できます。

public static BitmapSource Create(
    int pixelWidth,
    int pixelHeight,
    double dpiX,
    double dpiY,
    PixelFormat pixelFormat,
    BitmapPalette palette,
    Array pixels,
    int stride
)
于 2012-07-22T04:05:01.067 に答える