3年後、ちょっとしたきっかけとして、コマンドラインからImageMagickを使ってこれにアプローチする方法についていくつか考えてみます...
まず、 を使用して透明度チャネルを抽出できますが、-alpha extract <filename>
実際にはファイルが必要ないので、別のconvert
コマンドにパイプして、アルファが 1 でないすべてのものをしきい値処理することができます (16 ビットの量子化、つまり 65535 を想定しています)。 =1) 次に、ImageMagick を使用して、その画像を最小の境界ボックスにトリミングする方法を尋ねます。-format %@ -write info:
convert rectangle.png -alpha extract png:- | convert - -threshold 65534 -format %@ -write info: alpha.png
出力
91x118+80+81
これは、しきい値化された透明度のバウンディング ボックスが幅 91 ピクセル、高さ 118 ピクセルであり、左上隅から 80 ピクセルの位置から始まること、そして最も重要なことに、上から 81 ピクセル下から始まることを示しています。y 座標は 81 であることがわかりました。 .
探しているピクセルを見つけるために実際には必要ありませんが、私が何をしているかを示すのに役立ちます。
convert rectangle.png -stroke red -fill none -draw "rectangle 80,81 170,198" fyi.png
これで、画像から 81 番目の行だけを切り取って、最初の白いピクセルを探し、grep
見つかったらすぐに終了できます。
convert alpha.png -crop x1+0+81 txt: | grep -m1 "#FFFFFF"
出力
147,0: (65535,65535,65535) #FFFFFF gray(255)
つまり、最初の白いピクセルの幅は 147 であることがわかり、x 座標もわかります。したがって、求めるピクセルは 147,81 です。