Still pretty new here… have WebODM running on a cloud server with Ubuntu 16.04. I have processed some sample images that I found online ok. I just tried some images that we shot with a Mavic 2 Pro but getting some errors. I read one of the other post similar to this and decided to run the webodm update. It changed the errors a bit but it still works on the sample images.
File “/code/opendm/gsd.py”, line 59, in opensfm_reconstruction_average_gsd
raise FileNotFoundError(reconstruction_json + " does not exist.")
NameError: global name ‘FileNotFoundError’ is not defined
This worked for me but now I’m having other issues. I got it to work but now I’m trying to process 23 images and it’s taking a very long time so not sure if it’s my hardware.
I dont know if this is part of the problem but the altitude data embedded into my pictures seems to be way off. We were flying at 300 ft agl and about 1000 ft above sea level.
In looking at the exif data from my pics there is a huge amount of info there… GPS data in decimal format as well as degrees minutes and seconds. There is a GPS altitude above sea level which appears to be way off… but there is also absolute altitude and a relative altitude which appears to be the number that should be used. Would it be possible to have a way of selecting that instead of the GPS altitude above sea level.
I also found the thread about the coming firmware update that is supposed to fix the gps altitude so may be a bit academic.
I found a program called piexif and installed in on my server but not skilled enough to make use of it. https://piexif.readthedocs.io/en/latest/functions.html
Just trying to get a usable set of pictures to experiment with.
After much wailing and gnashing of teeth finally some progress. I have built a django box at home primarily to try to rewrite the exif data. I used this script to modify the files…
import os
import piexif
from PIL import Image
for filename in os.listdir():
if filename.endswith(‘.jpg’):
img = Image.open(filename)
exif_dict = piexif.load(img.info[‘exif’])
altitude = exif_dict[‘GPS’][piexif.GPSIFD.GPSAltitude]
print(altitude)
exif_dict[‘GPS’][piexif.GPSIFD.GPSAltitude] = (300, 1)
exif_bytes = piexif.dump(exif_dict)
img.save(‘r_%s’ % filename, “jpeg”, exif=exif_bytes)
it rewrote the GPS altitude to 300 meters should have been about 375 I’m going to redo again to the correct altitude. it rewrites all the .jpg files in a directory… but it may have some issues… it also seems to reduce the size of the files to about 1/3 their original size… and it caused some errors in the processing. the pics and output file are below… its 106 pics… I included 4 unaltered images to compare exif data before and after.
I had this issue with the mavic 2 pro. To fix/rewite the exif tag I used exiftool and updated the images before uploading them to to WebODM. After that the images seemed to process fine.
For Windows or Mac OS you can download it here.
For Ubuntu you can apt-get install exiftool
The Command I used on windows was as follows to adjust my photos to 274 meters.
“exiftool(-k).exe” -GPSAltitude=274 DJI_*.JPG
Thanks for that… I had downloaded that program and used it to manually edit a few pics but didn’t know you could do a batch edit like that… I will have to try that. I changed my altitude to 375 and only used 28 pics and it ran that ok… running another batch of 36 that’s still processing. Still having some issues with the folks at digitalocean… going to try to get WebODM running at home and give up on those guys.
actually I had used exif pilot to edit exif data manually and was able to view exif data with exiftool by dragging and dropping files onto it but no luck running it from a cmd line on windows
C:\Windows\system32>exiftool
‘exiftool’ is not recognized as an internal or external command,
operable program or batch file.
Hi, I’m responding to the original poster as I have the same error, but am not convinced it’s a problem with EXIF data nor images from a particular drone manufacturer.
My findings:
WebODM fully up to date (sudo ./webodm.sh update)
Error occurs with raw drone images (that have EXIF data)
Error occurs with images taken from a video file using ffmpeg (e.g. ffmpeg -i video.mp4 -vf fps=5/1 out%d.jpg) which don’t have any EXIF data populated at all
Tried four different data sets, all have same error
Tried ‘touching’ one dataset using exiftool, setting altitude to 300, same error
Originally wondered if my pictures were too small (e.g. 1920x1080, and I had resize on), but I have disabled resize; still same error occurring
Platform: AWS virtual server, 8 core, Ubuntu Linux 18.04, only docker-compose, python-pip and WebODM installed
Error message:
gsd = opensfm_reconstruction_average_gsd(reconstruction_json)
File “/usr/local/lib/python2.7/dist-packages/repoze/lru/init.py”, line 348, in cached_wrapper
val = func(*args, **kwargs)
File “/code/opendm/gsd.py”, line 59, in opensfm_reconstruction_average_gsd
raise FileNotFoundError(reconstruction_json + " does not exist.")
NameError: global name ‘FileNotFoundError’ is not defined
I was really hopeful of using WebODM so any help would be gratefully received, many thanks
What drone do you have… what was your drones approximate altitude above sea level. I’ve had mixed results… I was able to process 66 of a 106 picture set but think I was having memory issues as well when trying to do more. I tried to process some of the images from this post… Well, I'm at my wits end. . . . but without much success… was able to process 6 images but failed with 21. Could not run any until I modified the altitude data but really didn’t know the correct altitude.
It’s a Mavic 2 pro. I flew a litchi mission with the altitude set for 120 meters above ground. So the altitude for each image should be 120 meters. I also process them in webODM with a forced ccd of 25.4 and a forced focal of 28.