108 lines
3.1 KiB
Python
108 lines
3.1 KiB
Python
from math import *
|
|
from exif import Image
|
|
|
|
# Fonctions
|
|
|
|
def capteur ():
|
|
print('\n> Infos sur le capteur\n')
|
|
marque = input('Marque : ')
|
|
modele = input('Modèle : ')
|
|
|
|
while True:
|
|
try:
|
|
f = float(input('Focale réelle de la lentille (en mm) : '))
|
|
break
|
|
except ValueError:
|
|
print('Erreur, la valeur saisie doit-être un réel...')
|
|
|
|
i = 0
|
|
|
|
while i == 0:
|
|
choix = input('\nConnaissez-vous les dimensions réelles du capteur (O/N) ? ')
|
|
choix = choix[0:1].lower()
|
|
|
|
if choix == 'o':
|
|
while True:
|
|
try:
|
|
longueur = float(input('Entrez sa longueur (en mm) : '))
|
|
break
|
|
except ValueError:
|
|
print('Erreur, la valeur saisie doit-être un réel...')
|
|
|
|
while True:
|
|
try:
|
|
largeur = float(input('Entrez sa largeur (en mm) : '))
|
|
break
|
|
except ValueError:
|
|
print('Erreur, la valeur saisie doit-être un réel...')
|
|
|
|
i += 1
|
|
|
|
elif choix == 'n':
|
|
while True:
|
|
try:
|
|
x = int(input('Entrez la taille d''image X (en px) : '))
|
|
break
|
|
except ValueError:
|
|
print('Erreur, la valeur saisie doit-être un entier...')
|
|
|
|
while True:
|
|
try:
|
|
y = int(input('Entrez la taille d''image Y (en px) : '))
|
|
break
|
|
except ValueError:
|
|
print('Erreur, la valeur saisie doit-être un entier...')
|
|
|
|
while True:
|
|
try:
|
|
pixel = float(input('Entrez la taille de pixel (en micromètres) : '))
|
|
break
|
|
except ValueError:
|
|
print('Erreur, la valeur saisie doit-être un réel...')
|
|
|
|
longueur = x * (pixel / 1000)
|
|
largeur = y * (pixel / 1000)
|
|
|
|
i += 1
|
|
|
|
else:
|
|
print('Erreur, choix non disponible...')
|
|
|
|
return marque, modele, f, longueur, largeur
|
|
|
|
# Code
|
|
|
|
## Variables initiales
|
|
|
|
i1 = True
|
|
|
|
while i1 == True:
|
|
c_marque,c_modele,c_focale,c_long,c_larg = capteur()
|
|
|
|
print('\nLe capteur saisi est un {} {} avec une focale de {} mm et une taille de {} mm par {} mm.'.format(c_marque,c_modele,c_focale,c_long,c_larg))
|
|
|
|
i2 = True
|
|
|
|
while i2 == True:
|
|
rep = (input ('\nEst-ce correct (O/N) ? '))
|
|
rep = rep[0:1].lower()
|
|
|
|
if rep == 'o':
|
|
i1 = False
|
|
i2 = False
|
|
elif rep == 'n':
|
|
i2 = False
|
|
else:
|
|
print('Erreur, choix non disponible...')
|
|
|
|
champ = 2 * atan(sqrt(pow(c_long,2)+pow(c_larg,2))/(2 * c_focale))
|
|
focale_35mm = (sqrt(pow(24,2)+pow(36,2))) / (2*tan(champ/2))
|
|
|
|
print('\nFocale équivalente 35 mm : {} mm'
|
|
'\nAngle de champ : {}°'.format(focale_35mm,degrees(champ)))
|
|
|
|
|
|
rep = input('\nVoulez-vous écrire ces informations en EXIF dans des images (O/N) ? ')
|
|
|
|
if rep == 'o':
|
|
chemin_images = input('Entrez le chemin vers les images : ') |