1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| from PIL import Image
from math import sqrt, atan
image_originale = Image.open("Fisheye_photo.jpg") #ouvre l'image originale
infos = (image_originale.size) #stocke largeur + hauteur dans infos
largeur_image = infos[0] #récupère dans la liste infos largeur + hauteur
hauteur_image = infos[1]
mi_largeur = largeur_image/2
mi_hauteur = hauteur_image/2
force = 5
zoom = 1.2
new_largeur = int(largeur_image * zoom)
new_hauteur = int(hauteur_image * zoom)
image_corrigee = Image.new("RGB", (new_largeur, new_hauteur)) #crée une nouvelle image au même dimension
correction_angle = (sqrt(((largeur_image)**2) + ((hauteur_image)**2)))/force
X = 0
Y = 0
pix = image_corrigee.load()
theta = 0
for x in range (largeur_image):
for y in range(hauteur_image):
X = x - mi_largeur
Y = y - mi_hauteur
distance = sqrt((X**2)+(Y**2))
r = distance / correction_angle
if r == 0:
theta = 1
else:
theta = atan(r)/r
X_final = mi_largeur + theta * X * zoom
Y_final = mi_hauteur + theta * Y * zoom
pix[X_final, Y_final] = image_originale.getpixel((X_final,Y_final))
image_originale.show()
image_corrigee.show() |
Partager