私はこのイメージの点(この場合は赤色)に最も近い点を見つけようとしています。この画像では、この出力は、右imagemagickで最も近い点を見つけますか?
から最初の行のポイントを見つける方法私ができるこの
出力
は私を助けてくださいます。
私はこのイメージの点(この場合は赤色)に最も近い点を見つけようとしています。この画像では、この出力は、右imagemagickで最も近い点を見つけますか?
から最初の行のポイントを見つける方法私ができるこの
出力
は私を助けてくださいます。
これは楽しいですね!のは、ImageMagickのを使用してテキストに画像をダンプしてみましょう:
convert image.png txt:
# ImageMagick pixel enumeration: 337,218,65535,srgb
0,0: (65535,65535,65535) #FFFFFF white
1,0: (65535,65535,65535) #FFFFFF white
2,0: (65535,65535,65535) #FFFFFF white
3,0: (65535,65535,65535) #FFFFFF white
4,0: (65535,65535,65535) #FFFFFF white
...
...
221,79: (0,0,0) #000000 black
221,80: (0,0,0) #000000 black
221,81: (0,0,0) #000000 black
221,82: (0,0,0) #000000 black
...
...
[OK]を、今のは、すべての黒画素を見つけるためにawk
を使用し、彼らの(x、y)を印刷してみましょう座標:
convert image.png txt: | awk -F'[,:]' '/black/{x=$1;y=$2;print x,y}'
221 79
221 80
221 81
221 82
221 83
221 84
...
...
[OK]を、今してみましょうawk
ここで、赤のピクセルは、rx
(赤いx座標)とry
(赤いy座標)を渡すことです。次に、赤から各黒のピクセルまでのx距離とy距離の二乗和を計算します。これまでに見られたものよりも少ない(すなわち、より近い)場合は、場所を保存します。最寄りの場所を最後に印刷します。
convert image.png txt: | awk -F'[,:]' -v rx=318 -v ry=127 '
BEGIN{m=999999}
/black/{
x=$1; y=$2; d2=(rx-x)*(rx-x)+(ry-y)*(ry-y)
if(d2<m){m=d2;xm=x;ym=y}
}
END{print xm,ym}'
277 127
これは答えです...(277,127)。さんがシアンの円を描画して、それを確認してみましょう:オン
convert image.png -fill cyan -draw "circle 277,127 277,132" check.png
再読み込み質問を、私は私の解決策は、上記のために食料調達するのに対し、あなたは実際には水平に最も近い点が欲しいことに注意してください任意の方向の一般的な場合。あなただけの水平オフセットしたい、とあなたは水平線がy座標127であることがわかっている場合、あなただけの画像から、その特定の行を抽出することができますし、このようなもの簡素化:あなたはawk
が気に入らない場合
convert image.png -crop x1+0+127 txt: | awk -F'[,:]' -v rx=318 '
BEGIN{m=999999} /black/{x=$1;d=(rx-x)*(rx-x);if(d<m){m=d;xm=x}} END{print xm}'
277
を、あなただけの眼球でそれを行う...
convert image.png -crop x1+0+127 txt: | grep -E "black|red"
221,0: (0,0,0) #000000 black
277,0: (0,0,0) #000000 black <--- nearest black to red
314,0: (65535,0,0) #FF0000 red
315,0: (65535,0,0) #FF0000 red
316,0: (65535,0,0) #FF0000 red
317,0: (65535,0,0) #FF0000 red
318,0: (65535,0,0) #FF0000 red
319,0: (65535,0,0) #FF0000 red
320,0: (65535,0,0) #FF0000 red
どのように私は、赤色画素の座標を見つけたことができますか?
compare -metric rmse -subimage-search -dissimilarity-threshold 1 image.png \(-size 1x1 xc:red \) null:
0 (0) @ 317,121
注意:私はむしろ平方根より二乗の和を使用
私はこのような赤色画素を探しのImageMagickのサブ画像の検索に使用しましたa> bの場合にはa * a> b * bとなるので、演算速度が速く、結果も同じであるため、四角形の合計のうち、a * b> bとなる。
OPは彼が座標を持っており、サブ画像検索で見つかったものがかなり大きい赤いブロブの正確な中心を見つけられないので、サブ画像検索によって生成されたものから若干異なるrx
とry
を使用しました。代わりに赤い小滴の左上端が表示されます。
赤い点の座標を知っていますか?あなたは "背景"と "ライン"の色を正確に知っていますか? –
はい私は赤い点の座標を知っています – victorhernandezzero
私は線の色を知っています – victorhernandezzero