Numpy配列の部分比較【画像の部分比較】

python コンピュータ
python
ベース配列の一部分のスライスと比較用配列を==で比較します。
結果は各要素を比較しbool型の(true又はfalse)配列が結果として返されます。
その配列を.all()メソッドですべての要素が全て一致(true)か確認して返します。
#!/usr/bin/env python3

# 
# 部分一致
# 

import numpy as np

data = np.full((10,10), 255, 'uint8')

rep = np.zeros((3,4), 'uint8')

y = 1 # 置き換え座標y
x = 1 # 置き換え座標x
h, w =rep.shape[:2]
data[y:y+h,x:x+w] = rep

print(data)
#[[255 255 255 255 255 255 255 255 255 255]
# [255   0   0   0   0 255 255 255 255 255]
# [255   0   0   0   0 255 255 255 255 255]
# [255   0   0   0   0 255 255 255 255 255]
# [255 255 255 255 255 255 255 255 255 255]
# [255 255 255 255 255 255 255 255 255 255]
# [255 255 255 255 255 255 255 255 255 255]
# [255 255 255 255 255 255 255 255 255 255]
# [255 255 255 255 255 255 255 255 255 255]
# [255 255 255 255 255 255 255 255 255 255]]

result = (data[y:y+h,x:x+w] == rep)
print(result)
#[[ True  True  True  True]
# [ True  True  True  True]
# [ True  True  True  True]]
print(result.all())
#True
result = (data[y+1:y+1+h,x:x+w] == rep)
print(result)
#[[ True  True  True  True]
# [ True  True  True  True]
# [False False False False]]
print(result.all())
#False

コメント