Ajout du fichier FocaleEq.py
V1.0 du script-outil permettant de calculer la focale équivalente 35 mm d'un capteur (caméra), à partir de sa focale réelle et de sa taille. Le calcul est possible à partir de la taille réelle du capteur ou à partir de la résolution des images qu'il produit.
This commit is contained in:
101
Tools/FocaleEq.py
Normal file
101
Tools/FocaleEq.py
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
from math import *
|
||||||
|
|
||||||
|
# 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)))
|
||||||
Reference in New Issue
Block a user