Skip to content

Running OpenDroneMap

Piero Toffanin edited this page Jun 18, 2018 · 11 revisions

For the latest documentation, visit http://docs.opendronemap.org

The wiki is here only for historical reference purposes and is no longer up to date!


Running ODM

First make sure you have edit the settings.yaml file to your liking AND that you have properly set the environmental variables.

To use OpenDroneMap run the following command:

python run.py --images </path/to/images> <project-name>

Then sit back, grab a coffee and wait. Note that you only have to specify --images on the first run.


Running ODM with Ground Control

If you supply a GCP file called gcp_list.txt then ODM will automatically detect it. If it has another name you can specify using --gcp <path>. If you have a gcp file and want to do georeferencing with exif instead, then you can specify --use-exif.

This post has some information about placing Ground Control Targets before a flight, but if you already have images, you can find your own points in the images post facto. It's important that you find high-contrast objects that are found in at least 3 photos, and that you find a minimum of 5 objects.

For example, in this image, I would use the sharp corners of the diamond-shaped bioswales in the parking lot: Toledo sample image

You should also place/find the GCPs evenly around your survey area.

The gcp_list.txt file must then be created in the base of your project folder:

The format of the GCP file is simple. The header line is a description of the coordinate system: either a UTM specification written as "WGS84 UTM xx<N\S>" or a coordinate system definition in any format the GDAL library can understand. Link. We recommend using EPSG:n codes. Please note that currently angular coordinates (like lat/lon) do not work. Subsequent lines are the X, Y & Z coordinate in your coordinate system, your associated pixel and line number in the image, and the image name itself:

coordinate system description
x1 y1 z1 pixelx1 pixely1 imagename1
x2 y2 z2 pixelx2 pixely2 imagename2
x3 y3 z3 pixelx3 pixely3 imagename3

e.g. for the Langley dataset:

WGS84 UTM 10N
544256.7 5320919.9 5 3044 2622 IMG_0525.jpg
544157.7 5320899.2 5 4193 1552 IMG_0585.jpg
544033.4 5320876.0 5 1606 2763 IMG_0690.jpg

Given the recommendations above, your file should have a minimum of 15 lines after the header (5 points with 3 images to each point).

Make sure that filenames match exactly, the GCP file is case-sensitive (if a file is named IMG_0525.jpg, writing IMG_0525.JPG will not work and the point will be ignored).

Note: if you use a GCP file, then the images in the images_resize folder in your project will have coordinates in the EXIF data.

You can read the specification of the Ground Control Points file format here: https://github.com/mapillary/OpenSfM/blob/master/doc/source/gcp.rst