0

私の最後のラボタスクは、画像からパーツをトリミングし、トリミングした画像を元の画像に挿入し、回転させ、サイズを変更することです。

画像はtxtファイルに2D配列としてあり、Matlabはテキストファイルを画像/画像ファイルからtxtに変換するため、結果を確認できます。

私のコードでは、square(image.extract_sub_image(0,0,100,100);)をトリミングしても問題はありませんが、トリミングされた画像が反対の座標に挿入されます。理由はわかりません。また、rectangle(image.extract_sub_image(0,0,100,50);)をトリミングすると、プログラムがクラッシュします。また、理由もわかりません:(

PS:

読み取り、書き込み、get_dimensions関数は教授によって提供されます。これらは定数であり、ヘッダーファイルも教授によって提供されます**p2matr2D。これは彼のアイデアであり、変更することはできません。

私のコード:http ://codepad.org/F0mfR7dN

goldhill.txtファイル:http ://codepad.org/jfbeKLII

x、y座標系に従って間違えない場合、xは列、yは行である必要があります。これは、反対の挿入の意味です:http: //i.imgur.com/wgYsj.png、緑色のボックスは私が欲しいのは、赤いボックスが出てくるものです...

テキストファイルの最初の2つの値は、画像のサイズを決定します。これは、教授がMatlabスクリプトとC++コードを配置した方法です。

問題を解決するためのヒントやコメントをいただければ幸いです。コードが長いことは知っていますが、私が直面していることを説明するためにすべてを貼り付ける必要があったと思います。問題は、CCTOR、= op、抽出または挿入関数にあるはずです。

4

1 に答える 1

0

ある意味で、列を行で反転しているように見えます。これは、高さが幅と同じでない場合に例外が発生する理由と、同じ場合に画像が反転する理由を説明します。

私はあなたのコードを見ていませんでしたが、2次元配列の列配列に行インデックスを使用し、行配列に列インデックスを使用しているだけだと思います。それが最も単純な原因です。

また、ヒント:サイズheight * widthの1次元配列として書き直すと、速度が大幅に向上します。x座標とy座標を受け入れ、これらの座標を1次元配列の単一のインデックスに変換して値を返すメソッドを作成すると、このメソッドを作成した後で詳細を気にする必要がなくなります。

于 2012-06-22T08:05:40.303 に答える