写真を分析しようとしています。私は基本的に2つのステップでそれをやっています:
- グレースケール画像に変換する
- 写真の領域を取り、それらが白または黒である可能性が高いかどうかを確認します
私のプログラムはほとんどの場合うまくいきますが、すべてではありません。それは主に、写真を白黒に変換する方法がよくわからなかったからです。私は主に見つけたコードをコピーし、試行錯誤して機能させました(そのため、グレースケールのすべての非白ピクセルを黒にする方法が見つからなかったため、白黒ではなくグレースケールになりました)
私は画像操作に PIL を使用しており、画像操作の主な関数は次のようになります (convert() は一度使用され、変換された画像のすべての部分に avgcol() が使用されます。分析したい)
def convert():
global im
matrix = (1.412453, 0.357580, 0.180423, 0,
0.212671, 0.715160, 0.072169, 0,
0.019334, 0.119193, 0.950227, 0 )
im = im.convert("L", matrix)
def avgcol(im):
p_colors=im.getcolors()
cnt_pix=(im.size[0])*(im.size[1])
avgpix=0
for i in range(len(p_colors)):
avgpix=avgpix+p_colors[i][0]*p_colors[i][1]
return round(avgpix/cnt_pix , 1)
マトリックスが何をするのか、よくわかりません(単一の値を説明するサイトが見つかりませんでした)。現在の私の具体的な問題は、緑が多すぎるピクセルを白のピクセルに変換したいということですが、それが解決されれば、何か他のものが飛び出すと確信しています。やった、素晴らしいだろう。しかし、正しい方向への指針に感謝します。そして、すべてのピクセルをforループする解決策はありません。写真はかなり大きく、プログラムは高速である必要があります。