Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Automatisation de la création HDR de fichiers *.dng
#2
J'utilise à titre personnel un script <script.py> écrit en python, pour HDRMerge.

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
Répondre


Messages dans ce sujet
RE: Automatisation de la création HDR de fichiers *.dng - par Dominique38 - 19-11-24, 11:27

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)