import math import cv2 import numpy xlist=[] ylist=[] xres=1280/5 yres=720/5 #constant = 1./math.sqrt((xres/2)**2 + (yres/2)**2) constant = 1./(1280/2.)*30./42. print constant for y in xrange(0,yres): xtmp=[] ytmp=[] yy=(y-yres/2.)/yres*720 for x in xrange(0,xres): xx=(x-xres/2.)/xres*1280 dist = math.sqrt(xx**2 + yy**2) if (dist != 0): xtmp=xtmp+[ 1280/2+ xx/dist/constant*math.atan(constant*dist) ] ytmp=ytmp+[ 720/2 + yy/dist/constant*math.atan(constant*dist) ] else: xtmp=xtmp+[0+1280/2] ytmp=ytmp+[0+720/2] xlist=xlist+[xtmp] ylist=ylist+[ytmp] if y % 10 == 0: print y xmap=numpy.array(xlist).astype('float32') ymap=numpy.array(ylist).astype('float32') img=cv2.imread("../cam42.png") img2=cv2.remap(img, xmap, ymap, cv2.INTER_CUBIC) cv2.imshow("orig", img) cv2.imshow("remap", img2) print img2.shape while cv2.waitKey(50) & 256 != ord("q"): pass