基本的に、私は何かを自動化したいと考えています。特定のボタンの 100x50 の写真をキャプチャし、同じサイズの同じ領域の写真を撮り、2 つの写真を比較して異なるかどうかを確認するスクリプトを作成します。それらが異なる場合、何もしません。それらが類似している場合、+/- 一定量、それをクリックします。
私はスクリーンキャプチャの種類をうまくいっていましたが、それらをPILと比較する方法がわかりません。私は成功せずにたくさんのグーグルをしました。
基本的に、私は何かを自動化したいと考えています。特定のボタンの 100x50 の写真をキャプチャし、同じサイズの同じ領域の写真を撮り、2 つの写真を比較して異なるかどうかを確認するスクリプトを作成します。それらが異なる場合、何もしません。それらが類似している場合、+/- 一定量、それをクリックします。
私はスクリーンキャプチャの種類をうまくいっていましたが、それらをPILと比較する方法がわかりません。私は成功せずにたくさんのグーグルをしました。
を使用pylab.imread
して、画像を NumPy 配列に簡単に読み込むことができます。
In [3]: import scipy, pylab
In [4]: x = pylab.imread('example.jpg')
In [5]: x.shape
Out[5]: (480, 640, 3)
画像またはそのサブセットを表示できます。
In [6]: pylab.imshow(x)
Out[6]: <matplotlib.image.AxesImage at 0x98e564c>
In [7]: pylab.show()
2 つの 8 行 8 列のブロック (たとえば、赤と青のレイヤーの左上のブロック) を比較する場合、平均二乗誤差を計算できます。
In [8]: x[:8,:8,0]
Out[8]:
array([[147, 143, 146, 144, 146, 148, 146, 149],
[145, 142, 146, 145, 147, 149, 148, 151],
[143, 141, 146, 145, 147, 147, 148, 150],
[143, 143, 146, 146, 146, 145, 147, 148],
[147, 147, 147, 148, 147, 145, 146, 146],
[146, 147, 145, 147, 148, 145, 147, 146],
[146, 147, 144, 147, 147, 144, 146, 144],
[147, 148, 144, 147, 147, 144, 146, 144]], dtype=uint8)
In [9]: x[:8,:8,1]
Out[9]:
array([[125, 121, 122, 120, 118, 120, 116, 120],
[123, 120, 122, 122, 119, 121, 118, 122],
[122, 120, 123, 122, 120, 120, 118, 121],
[122, 122, 123, 122, 120, 118, 117, 119],
[124, 123, 123, 124, 121, 119, 119, 119],
[122, 123, 120, 122, 121, 119, 119, 119],
[121, 122, 116, 119, 119, 117, 119, 117],
[122, 122, 115, 118, 119, 116, 119, 117]], dtype=uint8)
In [10]: def mse(x, y):
....: return scipy.mean((x.astype(float)-y)**2)
In [11]: mse(x[:8,:8,0], x[:8,:8,1])
Out[11]: 676.0625