Messages : 41 
	Sujets : 13 
	Inscription : Mar 2019
	
 Réputation : 
 1
Système d'exploitation: 
 
	 
 
	
	
		Bonjour, je passe un temps de fou quand je rentre de prise de photos HRD à 3 expositions différentes... 
Y a-t-il possibilité de pondre un script *.lua qui ferait le job, à moins qu'il existe déjà ? 
Fonction à faire : repérer les photos prises à la suite, les assembler en *.dng, mettre en rejeté les photos originales, ajouter un style au *.dng qui corrige l'exposition ! 
Je ne trouve que très peu de documentation pour créer des scriptes lua, si c'est possible, bien sûr ! 
Merci de votre aide.
	 
	
	
	
	
 
 
	
	
	
		
	Messages : 25 
	Sujets : 7 
	Inscription : Mar 2019
	
 Réputation : 
 1
Système d'exploitation: 
 
Distribution(s) Linux: Kubuntu 22.04
	  
 
	
	
		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 
 
	
	
 
 
	
	
	
		
	Messages : 41 
	Sujets : 13 
	Inscription : Mar 2019
	
 Réputation : 
 1
Système d'exploitation: 
 
	 
 
	
	
		 (19-11-24, 11:27)Dominique38 a écrit :  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. 
Et bien, je ne connais pas HDRMerge, mais j'ai trouvé un lua pour Darktable... 
Je vais essayer et un peu étudier.
 
Etant sur Windows, je ne sais pas si je peux utiliser le script proposé, mais en regardant en gros, il utilise les exifs pour savoir si les photos ont été prises en rafale, c'est l'idée que j'avais !
 
Merci beaucoup pour votre réponse.
	  
	
	
	
	
 
 
	
	
	
		
	Messages : 41 
	Sujets : 13 
	Inscription : Mar 2019
	
 Réputation : 
 1
Système d'exploitation: 
 
	 
 
	
	
		J'ai créer un script lua, à voir sur le forum à ce sujet : 
https://forums.darktable.fr/showthread.php?tid=6827
	 
	
	
	
	
 
 
	 
 |