Našiel som odpoveď, že pracoval pre mňa, tak som sa chcela podeliť to v prípade, že niekto má podobnú otázku. Kód porovnáva pixelov dva obrázky a nájde rozdiely. Rovnaké pixelov bude mať hodnotu 0. Vediac, môžeme použiť numpy nájsť non-zero pixelov použiť číslo, ak chcete vypočítať rozdiel skóre.
môžete použiť tento kód
import cv2
import numpy as np
img1 = cv2.imread("16x16_orig.png", 0)
img2 = cv2.imread("16x16_dif.png", 0)
#--- take the absolute difference of the images ---
res = cv2.absdiff(img1, img2)
print(res)
#--- convert the result to integer type ---
res = res.astype(np.uint8)
print(np.count_nonzero(res))
#--- find percentage difference based on number of pixels that are not zero ---
percentage = (np.count_nonzero(res) * 100)/ res.size
print(percentage)
pomocou dva obrázky pod vráti skóre 50%, čo je to, čo očakávame.
Pôvodný Obrázok
rôzne
po tom, čo sme si absdiff, výsledné pole vyzerá takto:
[[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[207 207 207 207 207 207 207 207 207 207 207 207 207 207 207 207]
[207 207 207 207 207 207 207 207 207 207 207 207 207 207 207 207]
[207 207 207 207 207 207 207 207 207 207 207 207 207 207 207 207]
[207 207 207 207 207 207 207 207 207 207 207 207 207 207 207 207]
[207 207 207 207 207 207 207 207 207 207 207 207 207 207 207 207]
[207 207 207 207 207 207 207 207 207 207 207 207 207 207 207 207]
[207 207 207 207 207 207 207 207 207 207 207 207 207 207 207 207]
[207 207 207 207 207 207 207 207 207 207 207 207 207 207 207 207]]
Je dôležité poznamenať, že obrázky, ktoré chcete porovnať bude musieť byť rovnakej veľkosti.
Pre tých, ktorí sú zvedaví na obrázky v pôvodnej otázke. Výsledkom bol 2.56% rozdiel s 1292 non nula pixelov