19-11-24, 11:27
J'utilise à titre personnel un script <script.py> écrit en python, pour HDRMerge.
https://jcelaya.github.io/hdrmerge/
Je ne suis pas développeur, je n'avais jamais écrit de script, je ne possède donc pas les compétences pour aller plus avant.
Le script est opérationnel avec Kubuntu 22.04.
Si cela peux servir de base de départ.
HDRmerge peut être utilisé directement en mode CLI, pour peu que les prises de vue brackettées soit prises avec qqs sec de décalage.
https://jcelaya.github.io/hdrmerge/
Code :
import os
from os import listdir
from os.path import isfile, join
import pyexiv2
import numpy as np
import colored
from pathlib import Path
print()
Dossier = input("Input Dossier RAWs - Entrée pour continuer : ")
#print("\n", "Dossier : ", Dossier, "\n") # Dossier : '/home/vieux_loup/Images/.Workflow/Travaux photos/Test_batch_hdrmerge/10_RAW'
raws = sorted([f for f in listdir(Dossier) if isfile(join(Dossier, f))])
#print("Photos : ", raws, type(raws), "\n")
Photos = len(raws)
#print("Nombre de photos : ", Photos, type(Photos), "\n")
Item = raws[:]
def ExposureTime(raw):
img = os.path.join(Dossier, raw)
md = pyexiv2.ImageMetadata(img)
md.read()
exposuretime = float(md['Exif.Photo.ExposureTime'].value)
#exposuretime = ("{}".format(exposuretime))
return(exposuretime)
ExTi = list(map(ExposureTime, Item))
#print("Exposure Time : ", ExTi, type(ExTi), "\n")
Bkt = len(set(ExTi))
#print("Braketting : ", Bkt, " expositions", type(Bkt), "\n") # https://www.delftstack.com/fr/howto/python/python-print-colored-text/
if Photos % Bkt > 0:
input("Erreur - 1 pile incomplète - Entrée pour quitter")
exit()
#print(f'{colored.fg(1)} Texte en rouge')
dictionnary = dict(zip(raws, ExTi))
#print("Dictionnaire : ", dictionnary, type(dictionnary), "\n")
trie_dictionnary = dict(sorted(dictionnary.items(), key=lambda item:item[1],reverse=True)) # reverse
#print("Trie par Exposure Time : ", trie_dictionnary, type(trie_dictionnary), "\n")
Trie_photos = list(trie_dictionnary.keys())
#print("Photos triées : ", Trie_photos, type(Trie_photos), "\n")
Photos_par_exposuretime = [Trie_photos[i : i + int(Photos/Bkt)] for i in range(0, len(Trie_photos), int(Photos/Bkt))]
#print("Photos par exposition : ", Photos_par_exposuretime, type(Photos_par_exposuretime), "\n")
Panorama = np.asarray(Photos_par_exposuretime)
#print("Panorama : ", Panorama, type(Panorama), Panorama.shape, "\n")
Piles = Panorama[0, :].tolist()
#print("Tableau Colonne 1 : ", Piles, type(Piles), len(Piles), "Piles", "\n")
Pile_1 = Panorama[:, 0].tolist()
print()
Message = ("Pile 1 pour contrôle : ", Pile_1, "Entrée pour continuer")
input(Message)
os.chdir(Dossier)
#print("Dossier Directory : ", os.getcwd(), "\n")
for pile in Piles:
Index_pile = Piles.index(pile)
#print(Index_pile)
Pile_list = Panorama[:, Index_pile].tolist()
Pile = ' '.join(Pile_list)
#Cde_HDRMerge = str("hdrmerge -v --batch -a -g 10 -b 32 --no-crop " + Pile)
#Cde_HDRMerge = str("hdrmerge -v --batch -a -g 10 -b 24 -p half --no-crop " + Pile)
#Cde_HDRMerge = str("hdrmerge -v --batch -a -g 10 -b 16 --no-crop " + Pile)
Cde_HDRMerge = str("hdrmerge -v --batch -a -m %od/%of_mask.png -g 10 -b 16 --no-crop " + Pile)
#Cde_HDRMerge = str("hdrmerge -v --batch -a -m %od/%of_mask.png -g 10 -b 16 " + Pile) # Autopano pas OK - .dng tailles différentes
print("\n", "Pile ", Index_pile+1, " : ", Cde_HDRMerge)
os.system(Cde_HDRMerge)
Je ne suis pas développeur, je n'avais jamais écrit de script, je ne possède donc pas les compétences pour aller plus avant.
Le script est opérationnel avec Kubuntu 22.04.
Si cela peux servir de base de départ.
HDRmerge peut être utilisé directement en mode CLI, pour peu que les prises de vue brackettées soit prises avec qqs sec de décalage.
Dominique
Kubuntu 22.04
Nikon D5500 - Objectif Nikkor AF-S DX 35 mm f/1.8G
Cordialement
Kubuntu 22.04
Nikon D5500 - Objectif Nikkor AF-S DX 35 mm f/1.8G
Cordialement