Fiche pratique "Traitement des clichés timelapses pour Panoramax Caméra Qoocam 3 ultra"

Et bien apparement ma config JOSM n’arrive pas à correctement lire les coordonnées en sortie du script, qui sont des les exifs.
Alors que dans Panoramax il n’y a pas de soucis.

Avant (mauvais positionnement)

Après (bon positionnement)

La seule différence se trouve dans l’écriture des coordonnées dans les exifs :

Dans ton script :

def set_timestamp(filename, epoch, lat, lon, direction, speed):
    ...
    gps = {
        piexif.GPSIFD.GPSVersionID: (2, 0, 0, 0),
        piexif.GPSIFD.GPSMapDatum: 'WGS-84',
        piexif.GPSIFD.GPSLatitudeRef: 'N' if lat>=0 else 'S',
        piexif.GPSIFD.GPSLatitude: (int(abs(lat) * 1000000), 1000000),
        piexif.GPSIFD.GPSLongitudeRef: 'E' if lon>=0 else 'W',
        piexif.GPSIFD.GPSLongitude: (int(abs(lon) * 1000000), 1000000),
        ...
    }
    ...

La fonction mis à jour par Perplexity :

def decimal_to_dms_rational(decimal):
    degrees = int(abs(decimal))
    minutes_float = (abs(decimal) - degrees) * 60
    minutes = int(minutes_float)
    seconds = (minutes_float - minutes) * 60
    frac = Fraction(seconds).limit_denominator(1000000)
    return ((degrees, 1), (minutes, 1), (frac.numerator, frac.denominator))

Un tableau des différences :

Et cette modification m’a permis de retrouver le bon positionnement des photos dans JOSM :grinning_face_with_smiling_eyes:
J’espère que mes explications sont assez clair, j’ai utilisé Perplexity pour essayer de trouver une solution faute de compétence sur cette thématique, mais je pense qu’il y a moyen de faire ça plus proprement :thinking:

Même si en regardant les exifs il n’y a pas plus de différence.
Mais c’est le seul paramètre qui semble correctement fonctionne dans JOSM. Sinon pour info, remettre les coordonnées en EPSG 2154 ça fonctionne aussi :sweat_smile:

C’est plus qu’étrange, car j’ai vérifié ce que produisait le script avec… JOSM !

La fonction proposée par Perplexity me fait peur sur la gestion des coordonnées ouest et sud… quand decimal est négatif.

Le tableau des différences (sorti par Perplexity) est incorrect… le stockage est sur 1 rationnel et pas deux entiers, par contre ajouter les 2 autres fraction à 0 est sûrement une bonne idée, je vais le faire.

1 Like

Correction faite: GPS lat/lon using 3 rationals instead of a single one + 1cm accuracy (cfd2b433) · Validations · Panoramax / Docs / Import scripts · GitLab

Par curiosité (vu que j’ai aucun problème avec JOSM, je viens de revérifier): quelle version de JOSM as-tu et quels plugins en relation avec les photos sont installés ?

1 Like

Salut, j’espère que je ne pollue pas le fil, j’ai commencé à faire des JPG timelapse en 96MP Qoocam 3 ultra, avec le .kvar, j’ai installé la dernière (git) version des outils Panoramax / Docs / Import scripts · GitLab, j’ai besoin d’un peu d’aide pour la mise en route, j’ai lancé un premier test et voilà :

/qoocam2panoramax.py --input /home/tigro/pano/20250508_143958_Interval/ --kvar /home/tigro/pano/20250508_143958_Interval/Interval_20250508_143959_000001.kvar 
2s offset applied on GPX/GPS timestamps
Traceback (most recent call last):
  File "/home/tigro/pano/import-scripts/preprocess/qoocam/./qoocam2panoramax.py", line 246, in <module>
    kvar = kvar_load(args.kvar)
           ^^^^^^^^^^^^^^^^^^^^
  File "/home/tigro/pano/import-scripts/preprocess/qoocam/./qoocam2panoramax.py", line 76, in kvar_load
    kvar[title].append(pts/pts_unit)
                           ^^^^^^^^
UnboundLocalError: cannot access local variable 'pts_unit' where it is not associated with a value

(Sous Ubuntu, après avoir installé toutes les dépendances python)

C’est bien perfectible je me doute, mais au moins ça ma dépanné :sweat_smile:
Merci pour ton patch, je vais tester ça cette semaine pour voir si j’ai toujours le problème

J’ai l’une des dernières versions et j’utilise plusieurs plugin mais pour les photos je pense que c’est surtout :

  • ImageWayPoint 36438
  • photo_geotagging 36413
  • photoadjust

Parfait tout fonctionne correctement maintenant !

Tant que j’y suis, est-ce que tu pourrais ajouter directement ProjectionType=‘equirectangular’ ? Comme ça, JOSM lira les images en mode 360 ?
Et également ajouter la hauteur des images ? La donnée semble déjà disponible dans le .kvar (not. via le script kvar2json.py).

En principe c’est déjà le cas: preprocess/qoocam/qoocam2panoramax.py · main · Panoramax / Docs / Import scripts · GitLab

Par contre, il faut que exiftool soit installé.

La hauteur ? tu veux dire l’altitude ? Je vois qu’effectivement je l’ai oubliée !

Si une erreur intervient lors de l’appel à exiftool, c’est désormais visible dans la sortie du script, ça ne se voyait pas avant.

Altitude ajoutée dans les EXIF si disponible !

La nouvelle est version est sur gitlab.

1 Like

Je crois que sur Mac la lecture du dossier coince un peu

ERROR: Error: File not found - /Volumes/Crucial
Error: File not found - X9/Qoocam
Error: File not found - 3/4_Test/Vire
Error: File not found - test
Error: File not found - 4/*.jpg

De mon côté j’utilisais

 subprocess.run(["exiftool", "-overwrite_original", "-ProjectionType=equirectangular", "-r", output_folder], check=True)

Bonjour,

J’ai mis à jour la QooCam 3 Ultra avec le dernier firmware (V1.1.4.2) et depuis cette MAJ le script “Qoocam2Panoramax.py” bloque sur les fichiers KVAR “unknown section”.

En comparant un KVAR avant et après MAJ du firmware j’ai l’impression que le poids du fichier a beaucoup augmenté pour une durée d’acquisition égale. Ils ont du rajouter pas mal d’informations

@cquest a deja repondu a ce sujet. C’est affiché mais non problematique

la V1.1.4.2 est sortie le 2O mai et les messages auquels tu me renvoie datent d’avant. J’ai l’impression que chez Kandao il y a un nouveau firmware tout les 4 matins…

Ils font effectivement évoluer très rapidement leurs logiciels… c’est un bon signe, même si malheureusement cela peut casser quelques scripts.

Donc, mise à jour à faire sur ma Qoocam puis tests !

1 Like

@cquest J’ai utilisé le scripts pour des tests

J’observe quelques petit dysfonctionnements à mon niveau

Dans l’exif de mes photos, j’ai la date des modification/Access à +2seconde sur l’heure DTO sur plusieurs photos

Un bug étrange dans JOSM prend en compte cette valeur (Modif) au lieu du Date/time de la photo

Aussi, j’ai vu qu’il n’y a pas date/heure GPS (exif) , je sais pas si c’est voulu à la conception.

Debug :
Windows 10 22h2, JOSM version 19412

Il y a 2 valeurs pour DateTimeOriginal ???

Est-ce que tu pourrais me transmettre cette photo ? ou bien un lien vers sa version en ligne ?
Je voudrais regarder si je n’ai pas introduit un bug de lecture du Timestamp dans Josm.

Voici la photo : SwissTransfer - Envoi sécurisé et gratuit de gros fichiers

En chargeant ta photo dans Josm, je vois ceci:

2025-06-11 16:50:12.300 SEVERE: org.openstreetmap.josm.tools.UncheckedParseException: The date string (2025-06-09 11:24:22) could not be parsed.. Cause : java.time.format.DateTimeParseException: Text '2025-06-09 11:24:22' could not be parsed at index 10

.....

2025-06-11 16:50:12.302 INFO: Aucune heure EXIF dans le fichier "file:/C:/Users/steph/Downloads/20250609_002095.jpg". Utilisation de la date de dernière modification comme horodatage.

Et effectivement, la date est composé avec la forme
YYYY-MM-DD HH:MM:SS au lieu de
YYYY:MM:DD HH:MM:SS

C’est un bug à corriger dans le script.

1 Like