1

さまざまな境界ボックスの xmin、ymin 座標を抽出するためにいくつかのヘッダー ファイルにアクセスする csh スクリプトがあります。awk などにパイプされたエコーから minx、maxx、miny maxy を見つける簡単な方法はありますか。例えば

set minx=`echo $x1\t$x2 | awk {something}`

set maxx = `echo $x1\t$x2 | awk {something else}

awk が最善の方法であるとは思えず、それが何であるかはわかりません。これが私のコードの一部です:

   set bb1 = `label_file -g "bounding box[0]" r$start_roi`

@ bb1_x = $bb1[1]
@ bb1_y = 1023 - $bb1[4]
@ bb1_h = $bb1[4] - $bb1[2]
@ bb1_w = $bb1[3] - $bb1[1]

これは、関心のある長方形の領域の xmin、ymin の幅と高さを返します。上記のコードを微調整して繰り返し、2 番目の領域の同じパラメーターを見つけます。

私が次にやりたいことは、小さい方の 2 を完全に囲む大きな長方形を定義するために、グローバルな xmin、ymin、xmax、および ymax を見つけることです。

つまり、xmin を $bb1[1] と $bb2[1] の小さい方に設定し、 xmax を $bb1[3] と $bb2[3] の大きい方に設定します。

ありがとう

4

1 に答える 1

3

これにより、パイプまたはファイルまたは数値を指定して最小値と最大値が出力されます。

awk '{
   min = ($0 =< min ? $0 : min)
   max = ($0 >= max ? $0 : max)
}
END {
   print min, max
}'

それが希望しない場合は、サンプル入力と期待される出力を提供してください。

(c)shellでファイルを解析し、awkを呼び出して算術演算を行うことにより、ほぼ確実に、より大きなタスクに完全に間違った方法でアプローチしています。awkは、テキストファイルを解析するように設計されています。

編集:更新された質問からのこのコードセグメントに基づいて:

set bb1 = `label_file -g "bounding box[0]" r$start_roi`
@ bb1_x = $bb1[1]
@ bb1_y = 1023 - $bb1[4]
@ bb1_h = $bb1[4] - $bb1[2]
@ bb1_w = $bb1[3] - $bb1[1]

「label_file」が4つのスペースで区切られた数値を出力するコマンドであると仮定すると、次のように実行できます。

label_file -g "bounding box[0]" "r$start_roi" |
awk '{
   bb1_x = $1
   bb1_y = 1023 - $4
   bb1_h = $4 - $2
   bb1_w = $3 - $1
}'

あなたはあなたにも2番目の地域があると言います。「$start_roi」が変更されるlabel_fileの引数であると仮定しましょう。次に、次のようなことを行うことができます。

( label_file -g "bounding box[0]" "r$start_roi";
  label_file -g "bounding box[0]" "r$other_roi" ) |
awk '{
   bb1_x[NR] = $1
   bb1_y[NR] = 1023 - $4
   bb1_h[NR] = $4 - $2
   bb1_w[NR] = $3 - $1
}'

その時点で、bbl_x [1]はstart_roiボックスのX値を保持し、bbl_x[2]はother_roiボックスのX値を保持します。あなたはそれを見ることができます:

( label_file -g "bounding box[0]" "r$start_roi";
  label_file -g "bounding box[0]" "r$other_roi" ) |
awk '{
   bb1_x[NR] = $1
   bb1_y[NR] = 1023 - $4
   bb1_h[NR] = $4 - $2
   bb1_w[NR] = $3 - $1
}
END {
   for (i=1; i<=NR; i++) {
      print i, bbl_x[i], bbl_y[i], bbl_h[i], bbl_w[i]
   }
}'

そこから何をすべきかを理解するのに助けが必要な場合は、私たちに知らせてください。

于 2012-12-18T14:16:09.153 に答える