J'exploite OpenCV pour calibrer un ensemble d'images. J'utilise la fonction standard cv::calibrateCamera
proposée par OpenCV, rien de spécial ici. Les images sont au format JPEG et le drapeau d'orientation EXIF est défini (et il peut être! = 1).Résultats d'étalonnage de caméra inattendus avec OpenCV sur images JPEG et orientation EXIF
J'ai remarqué que si les images ne sont pas toutes orientées en haut à gauche (Orientation == 1), le résultat de l'étalonnage est faux, ce qui entraîne généralement une erreur RMS très élevée. Au contraire, si je corrige manuellement l'orientation (en utilisant mogrify
ou exiftool
, par exemple), le résultat est comme prévu.
Avez-vous déjà rencontré ce genre de comportement? Pouvez-vous m'expliquer pourquoi cela se passe?
En guise de remarque, j'utilise OpenCV 3.1 sur un Mac OSX El Capitan, installé via Homebrew. Le code est en C++.
En fait, j'utilise 'imread'. Néanmoins, je n'ai toujours pas la raison pour laquelle l'orientation de l'image devrait influencer l'étalonnage. – lec00q
Toutes vos images ont-elles la même orientation? En tant que vérification, enregistrez une copie de chaque image après avoir trouvé les coins du damier et écrit les coins sur l'image. Enregistrez l'image en tant que png afin de vous débarrasser des informations de rotation, et cela pourrait vous montrer quelques problèmes – Paulus
Ils n'ont pas la même orientation, c'est sûr. Comment cela devrait-il influencer l'étalonnage? Je passe juste un ensemble de coordonnées de point à la routine d'étalonnage, pas les images elles-mêmes. Néanmoins, comme je pense que je n'obtiendrai pas de réponse à ma question, je vais choisir votre réponse comme la meilleure (et la seule). Merci pour votre temps. – lec00q