1

目的:

openCV関数cvResize()を使用して2D配列をリサンプリングしようとしています。[cvResizeを使用してopencvに動作するコードがあり、その使用法を知っています]しかし、リサンプリングする入力2D配列は、openCVを使用して読み取った画像ではありません。代わりにcvLoadImage()-

1.持っているテキストファイルから2D配列を読みたい。そのファイルには、浮動小数点値が含まれています。opencvライブラリを使用してこのテストコードでそのファイルを開き、floatの2D配列の値を読み取ります。

2.次に、cvResize()を使用してサイズを変更します。まず、ダウンサンプリングします-width / 2、height/2。

3.次に、幅* 4、高さ*4の4-でアップサンプリングします。これが私の最後の2D配列です。

4.この最終的な2D配列を浮動小数点値としてテキストファイルに保存します。

5.基本的にはOpenCVで使用されている双一次内挿ロジックを使用したいのですが、自分のデータで使用します。cvResize()のコードを表示できるパス/ファイルは何ですか?

どんなポインタでもありがたいです。

4

2 に答える 2

1

Matカスタムデータの上にラッパーを使用して、それを通常のMatオブジェクトとして使用することができます。使用するコンストラクターは次のとおりです。

Mat::Mat(int rows, int cols, int type, void* data, size_t step=AUTO_STEP)
于 2011-06-30T17:32:25.230 に答える
1

ここでの難しさは、ファイルから読み取ったデータを格納するためにデータ型(2D配列)を使用していることであるように思われます。これは、動作するものと互換性がありませんcvResize()IplImage*覚えていますか?)。

OpenCVのCインターフェイスを使用している場合(そして私が知っている他の質問を見て)、ファイルからカスタムデータ型(2D配列?)にデータを正常に読み取った後、IplImage*十分な大きさのを作成する必要がありますこの情報を保存します。

IplImage * cv_data_img = cvCreateImage(cvSize(custom_data_height、custom_data_width)、IPL_DEPTH_32F、1);

その後cv_data_img、元のデータのコピーを繰り返す必要があります。

データが入力されたら、の結果を保存するために必要なcv_data_img他のデータを作成できます。IplImage*cvResize()

最後に、結果IplImage*を繰り返し処理して、元のデータ型(2D配列)にコピーして戻すか、必要な処理を行うことができます。

于 2011-06-30T17:46:36.620 に答える