import numpy as np
import cv2

def phase(x):
    n = abs(x)
    n[n==0]=1
    return x/n

a0 = cv2.imread('dom2.png',0)
b0 = cv2.imread('okno3.png',0)

a = 1 - a0 / 255
b = np.zeros(a.shape)
b[0:b0.shape[0],0:b0.shape[1]] = 1 - b0 / 255

fa = np.fft.fft2(a)
fb = np.fft.fft2(b)
fb = np.conj(fb)
fa = phase(fa)
fb = phase(fb)
fd = np.multiply(fa,fb)
d = np.fft.ifft2(fd)

shift = np.unravel_index(np.argmax(np.real(d)), d.shape)
print(shift)

res = cv2.cvtColor(a0,cv2.COLOR_GRAY2RGB)
cv2.rectangle(res,(shift[1],shift[0]),(shift[1]+b0.shape[1],shift[0]+b0.shape[0]),(0,0,255),2)
cv2.imshow('found',res)
cv2.imshow('sought',b0)
cv2.waitKey(0)

cv2.destroyAllWindows()

