{"id":15132168,"url":"https://github.com/opendronemap/odm","last_synced_at":"2026-10-06T19:33:59.392Z","repository":{"id":21166695,"uuid":"24470090","full_name":"OpenDroneMap/ODM","owner":"OpenDroneMap","description":"A command line toolkit to generate maps, point clouds, 3D models and DEMs from drone, balloon or kite images. 📷","archived":false,"fork":false,"pushed_at":"2026-09-16T11:54:00.000Z","size":13516,"stargazers_count":6495,"open_issues_count":112,"forks_count":1314,"subscribers_count":242,"default_branch":"master","last_synced_at":"2026-09-29T02:10:33.266Z","etag":null,"topics":["aerial-imagery","drone","photogrammetry","point-cloud","structure-from-motion","uas"],"latest_commit_sha":null,"homepage":"https://opendronemap.org","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OpenDroneMap.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"code_of_conduct.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"claude":null,"gemini":null,"cursor":null,"copilot":null,"dco":null,"cla":null,"disclosure":null}},"created_at":"2014-09-25T18:29:10.000Z","updated_at":"2026-09-28T19:31:04.000Z","dependencies_parsed_at":"2026-09-16T18:35:05.680Z","dependency_job_id":null,"html_url":"https://github.com/OpenDroneMap/ODM","commit_stats":{"total_commits":2581,"total_committers":143,"mean_commits":18.04895104895105,"dds":0.449438202247191,"last_synced_commit":"65fad52506a7c3b07dcac34430a254ccf879e49c"},"previous_names":["opendronemap/opendronemap"],"tags_count":66,"template":false,"template_full_name":null,"purl":"pkg:github/OpenDroneMap/ODM","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenDroneMap%2FODM","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenDroneMap%2FODM/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenDroneMap%2FODM/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenDroneMap%2FODM/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpenDroneMap","download_url":"https://codeload.github.com/OpenDroneMap/ODM/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenDroneMap%2FODM/sbom","scorecard":{"id":105238,"data":{"date":"2025-08-11","repo":{"name":"github.com/OpenDroneMap/ODM","commit":"b8e9ee77a4c41745234565f5c981c23e8134aa1f"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.2,"checks":[{"name":"Code-Review","score":4,"reason":"Found 7/16 approved changesets -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":10,"reason":"19 commit(s) and 12 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/issue-triage.yml:1","Warn: no topLevel permission defined: .github/workflows/publish-docker-gpu.yaml:1","Warn: no topLevel permission defined: .github/workflows/publish-docker.yaml:1","Warn: no topLevel permission defined: .github/workflows/publish-windows.yml:1","Warn: no topLevel permission defined: .github/workflows/test-build-prs.yaml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU Affero General Public License v3.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v3.5.5 not signed: https://api.github.com/repos/OpenDroneMap/ODM/releases/204823019","Warn: release artifact v3.5.4 not signed: https://api.github.com/repos/OpenDroneMap/ODM/releases/174951513","Warn: release artifact v3.5.3 not signed: https://api.github.com/repos/OpenDroneMap/ODM/releases/166174279","Warn: release artifact v3.5.1 not signed: https://api.github.com/repos/OpenDroneMap/ODM/releases/159746390","Warn: release artifact v3.5.5 does not have provenance: https://api.github.com/repos/OpenDroneMap/ODM/releases/204823019","Warn: release artifact v3.5.4 does not have provenance: https://api.github.com/repos/OpenDroneMap/ODM/releases/174951513","Warn: release artifact v3.5.3 does not have provenance: https://api.github.com/repos/OpenDroneMap/ODM/releases/166174279","Warn: release artifact v3.5.1 does not have provenance: https://api.github.com/repos/OpenDroneMap/ODM/releases/159746390"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: third-party GitHubAction not pinned by hash: .github/workflows/issue-triage.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/OpenDroneMap/ODM/issue-triage.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish-docker-gpu.yaml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/OpenDroneMap/ODM/publish-docker-gpu.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish-docker-gpu.yaml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/OpenDroneMap/ODM/publish-docker-gpu.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish-docker-gpu.yaml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/OpenDroneMap/ODM/publish-docker-gpu.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish-docker-gpu.yaml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/OpenDroneMap/ODM/publish-docker-gpu.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish-docker-gpu.yaml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/OpenDroneMap/ODM/publish-docker-gpu.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish-docker.yaml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/OpenDroneMap/ODM/publish-docker.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish-docker.yaml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/OpenDroneMap/ODM/publish-docker.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish-docker.yaml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/OpenDroneMap/ODM/publish-docker.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish-docker.yaml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/OpenDroneMap/ODM/publish-docker.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish-docker.yaml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/OpenDroneMap/ODM/publish-docker.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish-docker.yaml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/OpenDroneMap/ODM/publish-docker.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish-windows.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/OpenDroneMap/ODM/publish-windows.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish-windows.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/OpenDroneMap/ODM/publish-windows.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish-windows.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/OpenDroneMap/ODM/publish-windows.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish-windows.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/OpenDroneMap/ODM/publish-windows.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish-windows.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/OpenDroneMap/ODM/publish-windows.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish-windows.yml:52: update your workflow using https://app.stepsecurity.io/secureworkflow/OpenDroneMap/ODM/publish-windows.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish-windows.yml:57: update your workflow using https://app.stepsecurity.io/secureworkflow/OpenDroneMap/ODM/publish-windows.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test-build-prs.yaml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/OpenDroneMap/ODM/test-build-prs.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test-build-prs.yaml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/OpenDroneMap/ODM/test-build-prs.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test-build-prs.yaml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/OpenDroneMap/ODM/test-build-prs.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test-build-prs.yaml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/OpenDroneMap/ODM/test-build-prs.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test-build-prs.yaml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/OpenDroneMap/ODM/test-build-prs.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test-build-prs.yaml:55: update your workflow using https://app.stepsecurity.io/secureworkflow/OpenDroneMap/ODM/test-build-prs.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test-build-prs.yaml:57: update your workflow using https://app.stepsecurity.io/secureworkflow/OpenDroneMap/ODM/test-build-prs.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test-build-prs.yaml:61: update your workflow using https://app.stepsecurity.io/secureworkflow/OpenDroneMap/ODM/test-build-prs.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test-build-prs.yaml:66: update your workflow using https://app.stepsecurity.io/secureworkflow/OpenDroneMap/ODM/test-build-prs.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test-build-prs.yaml:84: update your workflow using https://app.stepsecurity.io/secureworkflow/OpenDroneMap/ODM/test-build-prs.yaml/master?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:1","Warn: containerImage not pinned by hash: Dockerfile:27: pin your Docker image by updating ubuntu:21.04 to ubuntu:21.04@sha256:ba394fabd516b39ccf8597ec656a9ddd7d0a2688ed8cb373ca7ac9b6fe67848f","Warn: containerImage not pinned by hash: gpu.Dockerfile:1","Warn: containerImage not pinned by hash: gpu.Dockerfile:24: pin your Docker image by updating nvidia/cuda:11.8.0-runtime-ubuntu20.04 to nvidia/cuda:11.8.0-runtime-ubuntu20.04@sha256:25c41705e877940b40039ae53f60332f558589aba00bb69c7933c05fe47e8c3b","Warn: containerImage not pinned by hash: portable.Dockerfile:1","Warn: containerImage not pinned by hash: portable.Dockerfile:27: pin your Docker image by updating ubuntu:21.04 to ubuntu:21.04@sha256:ba394fabd516b39ccf8597ec656a9ddd7d0a2688ed8cb373ca7ac9b6fe67848f","Warn: pipCommand not pinned by hash: configure.sh:69","Warn: pipCommand not pinned by hash: configure.sh:70","Warn: pipCommand not pinned by hash: configure.sh:132","Warn: pipCommand not pinned by hash: configure.sh:133","Warn: pipCommand not pinned by hash: configure_macos.sh:42","Info:   0 out of   9 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of  20 third-party GitHubAction dependencies pinned","Info:   0 out of   5 pipCommand dependencies pinned","Info:   0 out of   6 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/publish-docker-gpu.yaml:11"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Vulnerabilities","score":0,"reason":"39 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-3f63-hfp8-52jq","Warn: Project is vulnerable to: PYSEC-2021-41 / GHSA-3wvg-mj6g-m9cv","Warn: Project is vulnerable to: GHSA-44wm-f244-xhp3","Warn: Project is vulnerable to: GHSA-4fx9-vc88-q2xc","Warn: Project is vulnerable to: PYSEC-2021-35 / GHSA-57h3-9rgr-c24m","Warn: Project is vulnerable to: PYSEC-2021-331 / GHSA-7534-mm45-c74v","Warn: Project is vulnerable to: PYSEC-2021-137 / GHSA-77gc-v2xv-rvvh","Warn: Project is vulnerable to: PYSEC-2021-92 / GHSA-7r7m-5h27-29hp","Warn: Project is vulnerable to: PYSEC-2023-227 / GHSA-8ghj-p4vj-mr35","Warn: Project is vulnerable to: PYSEC-2022-10 / GHSA-8vj2-vxx3-667w","Warn: Project is vulnerable to: PYSEC-2021-36 / GHSA-8xjq-8fcg-g5hw","Warn: Project is vulnerable to: PYSEC-2021-42 / GHSA-95q3-8gr9-gm8w","Warn: Project is vulnerable to: PYSEC-2021-317 / GHSA-98vv-pw6r-q6q4","Warn: Project is vulnerable to: PYSEC-2021-38 / GHSA-9hx2-hgq2-2g4f","Warn: Project is vulnerable to: PYSEC-2022-168 / GHSA-9j59-75qj-795w","Warn: Project is vulnerable to: PYSEC-2021-40 / GHSA-f4w8-cv6p-x6r5","Warn: Project is vulnerable to: PYSEC-2021-69 / GHSA-f5g8-5qq7-938w","Warn: Project is vulnerable to: PYSEC-2021-139 / GHSA-g6rj-rv7j-xwp4","Warn: Project is vulnerable to: PYSEC-2021-71 / GHSA-hf64-x4gq-p99h","Warn: Project is vulnerable to: PYSEC-2021-94 / GHSA-hjfx-8p6c-g7gx","Warn: Project is vulnerable to: GHSA-j7hp-h8jx-5ppr","Warn: Project is vulnerable to: GHSA-jgpv-4h4c-xhw3","Warn: Project is vulnerable to: PYSEC-2022-42979 / GHSA-m2vv-5vj5-2hm7","Warn: Project is vulnerable to: PYSEC-2021-37 / GHSA-mvg9-xffr-p774","Warn: Project is vulnerable to: PYSEC-2021-39 / GHSA-p43w-g3c5-g5mq","Warn: Project is vulnerable to: PYSEC-2022-8 / GHSA-pw3c-h7wp-cvhx","Warn: Project is vulnerable to: PYSEC-2021-93 / GHSA-q5hq-fp76-qmrc","Warn: Project is vulnerable to: PYSEC-2021-138 / GHSA-rwv7-3v45-hg29","Warn: Project is vulnerable to: PYSEC-2021-70 / GHSA-vqcj-wrf2-7v73","Warn: Project is vulnerable to: PYSEC-2022-9 / GHSA-xrcv-f9gm-v42c","Warn: Project is vulnerable to: PYSEC-2023-175","Warn: Project is vulnerable to: GHSA-g4m4-9q4c-mfw6","Warn: Project is vulnerable to: GHSA-q5fm-55c2-v6j9","Warn: Project is vulnerable to: PYSEC-2022-288 / GHSA-6hrg-qmvc-2xh8","Warn: Project is vulnerable to: PYSEC-2020-176 / GHSA-3pqx-4fqf-j49f","Warn: Project is vulnerable to: PYSEC-2020-96 / GHSA-6757-jp84-gxfx","Warn: Project is vulnerable to: PYSEC-2021-142 / GHSA-8q59-q68h-6hv4","Warn: Project is vulnerable to: PYSEC-2024-110 / GHSA-jw8x-6495-233v","Warn: Project is vulnerable to: PYSEC-2023-102"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-15T10:58:36.035Z","repository_id":21166695,"created_at":"2025-08-15T10:58:36.035Z","updated_at":"2025-08-15T10:58:36.035Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":343170754,"owners_count":38036355,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-10-03T21:59:58.778Z","status":"online","status_checked_at":"2026-10-05T02:00:06.766Z","response_time":83,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aerial-imagery","drone","photogrammetry","point-cloud","structure-from-motion","uas"],"created_at":"2024-09-26T04:04:32.209Z","updated_at":"2026-10-06T19:33:59.386Z","avatar_url":"https://github.com/OpenDroneMap.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"![ODM Logo](https://github.com/OpenDroneMap/ODM/blob/master/odm.png?raw=true)\n\nAn open source command line toolkit for processing aerial drone imagery. ODM turns simple 2D images into:\n\n- Classified Point Clouds\n- 3D Textured Models\n- Georeferenced Orthorectified Imagery\n- Georeferenced Digital Elevation Models\n\n![images-diag](https://user-images.githubusercontent.com/1174901/96644651-5b205600-12f7-11eb-827b-8f4a3a6f3b21.png)\n\nThe application is available for Windows, Mac and Linux and it works from the command line, making it ideal for power users, scripts and for integration with other software.\n\nIf you would rather not type commands in a shell and are looking for a friendly user interface, check out [OpenDroneMap Desktop](https://opendronemap.org/download).\n\n## Quickstart\n\nThe easiest way to run ODM is via docker. To install docker, see [docs.docker.com](https://docs.docker.com). Once you have docker installed and [working](https://docs.docker.com/get-started/#test-docker-installation), you can get ODM by running from a Command Prompt / Terminal:\n\n```bash\ndocker pull opendronemap/odm\n```\n\nRun ODM by placing some images (JPEGs, TIFFs or DNGs) in a folder named “images” (for example `C:\\Users\\youruser\\datasets\\project\\images` or `/home/youruser/datasets/project/images`) and simply run from a Command Prompt / Terminal:\n\n```bash\n# Windows\ndocker run -ti --rm -v c:/Users/youruser/datasets:/datasets opendronemap/odm --project-path /datasets project\n```\n\n```bash\n# Mac/Linux\ndocker run -ti --rm -v /home/youruser/datasets:/datasets opendronemap/odm --project-path /datasets project\n```\n\nYou can pass [additional parameters](https://docs.opendronemap.org/arguments/) by appending them to the command:\n\n```bash\ndocker run -ti --rm -v /datasets:/datasets opendronemap/odm --project-path /datasets project [--additional --parameters --here]\n```\n\nFor example, to generate a DSM (`--dsm`) and increase the orthophoto resolution (`--orthophoto-resolution 2`) :\n\n```bash\ndocker run -ti --rm -v /datasets:/datasets opendronemap/odm --project-path /datasets project --dsm --orthophoto-resolution 2\n```\n\n## Viewing Results\n\nWhen the process finishes, the results will be organized as follows:\n\n    |-- images/\n        |-- img-1234.jpg\n        |-- ...\n    |-- opensfm/\n        |-- see mapillary/opensfm repository for more info\n    |-- odm_meshing/\n        |-- odm_mesh.ply                    # A 3D mesh\n    |-- odm_texturing/\n        |-- odm_textured_model.obj          # Textured mesh\n        |-- odm_textured_model_geo.obj      # Georeferenced textured mesh\n    |-- odm_georeferencing/\n        |-- odm_georeferenced_model.laz     # LAZ format point cloud\n    |-- odm_orthophoto/\n        |-- odm_orthophoto.tif              # Orthophoto GeoTiff\n\nYou can use the following free and open source software to open the files generated in ODM:\n\n- .tif (GeoTIFF): [QGIS](http://www.qgis.org/)\n- .laz (Compressed LAS): [CloudCompare](https://www.cloudcompare.org/)\n- .obj (Wavefront OBJ), .ply (Stanford Triangle Format): [MeshLab](http://www.meshlab.net/)\n\n\u003e **Note:** Opening the .tif files generated by ODM in programs such as Photoshop or GIMP might not work (they are GeoTIFFs, not plain TIFFs). Use [QGIS](http://www.qgis.org/) instead.\n\n## API\n\nODM can be made accessible from a network via [NodeODM](https://github.com/OpenDroneMap/NodeODM).\n\n## Documentation\n\nSee http://docs.opendronemap.org for tutorials and more guides.\n\n## Forum\n\nWe have a vibrant [community forum](https://community.opendronemap.org/). You can [search it](https://community.opendronemap.org/search?expanded=true) for issues you might be having with ODM and you can post questions there. We encourage users of ODM to participate in the forum and to engage with fellow drone mapping users.\n\n## Windows Setup\n\nODM can be installed natively on Windows. Just download the latest setup from the [releases](https://github.com/OpenDroneMap/ODM/releases) page. After opening the ODM Console you can process datasets by typing:\n\n```bash\nrun C:\\Users\\youruser\\datasets\\project  [--additional --parameters --here]\n```\n\n## GPU Acceleration\n\nODM has support for doing SIFT feature extraction on a GPU, which is about 2x faster than the CPU on a typical consumer laptop. To use this feature, you need to use the `opendronemap/odm:gpu` docker image instead of `opendronemap/odm` and you need to pass the `--gpus all` flag:\n\n```bash\ndocker run -ti --rm -v c:/Users/youruser/datasets:/datasets --gpus all opendronemap/odm:gpu --project-path /datasets project --feature-type sift\n```\n\n\u003e **Note:** `opendronemap/odm:gpu` is the latest GPU release. To pin a release, use `opendronemap/odm:\u003cversion\u003e-gpu` (for example `opendronemap/odm:3.6.1-gpu`); for the latest development build, use `opendronemap/odm:edge-gpu`.\n\nWhen you run ODM, if the GPU is recognized, in the first few lines of output you should see:\n\n```\n[INFO]    Writing exif overrides\n[INFO]    Maximum photo dimensions: 4000px\n[INFO]    Found GPU device: Intel(R) OpenCL HD Graphics\n[INFO]    Using GPU for extracting SIFT features\n```\n\nThe SIFT GPU implementation is CUDA-based, so should work with most NVIDIA graphics cards of the GTX 9xx Generation or newer.\n\nIf you have an NVIDIA card, you can test that docker is recognizing the GPU by running:\n\n```bash\ndocker run --rm --gpus all nvidia/cuda:10.0-base nvidia-smi\n```\n\nIf you see an output that looks like this:\n\n```\nFri Jul 24 18:51:55 2020\n+-----------------------------------------------------------------------------+\n| NVIDIA-SMI 440.82       Driver Version: 440.82       CUDA Version: 10.2     |\n|-------------------------------+----------------------+----------------------+\n| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |\n| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |\n```\n\nYou're in good shape!\n\nSee https://github.com/NVIDIA/nvidia-docker and https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker for information on docker/NVIDIA setup.\n\n## Video Support\n\nStarting from version 3.0.4, ODM can automatically extract images from video files (.mp4, .mov, .lrv, .ts). Just place one or more video files into the `images` folder and run the program as usual. Subtitles files (.srt) with GPS information are also supported. Place .srt files in the `images` folder, making sure that the filenames match. For example, `my_video.mp4` ==\u003e `my_video.srt` (case-sensitive).\n\n## Developers\n\nHelp improve our software! We welcome contributions from everyone, whether to add new features, improve speed, fix existing bugs or add support for more cameras. Check our [code of conduct](https://github.com/OpenDroneMap/documents/blob/master/CONDUCT.md), the [contributing guidelines](https://github.com/OpenDroneMap/documents/blob/master/CONTRIBUTING.md) and [how decisions are made](https://github.com/OpenDroneMap/documents/blob/master/GOVERNANCE.md#how-decisions-are-made).\n\n### Installation and first run\n\n#### Dependencies\n\nInstall [pixi](https://pixi.sh), (or use the [devcontainer](https://containers.dev/)):\n\n**MSVC and the Windows SDK come from a host install** of Visual Studio 2022 or Build Tools ([conda-forge Windows native notes](https://conda-forge.org/docs/how-to/advanced/windows/notes-on-native-code/)):\n\n- Desktop development with C++\n- Windows 10/11 SDK\n\n#### Build and test\n\n```bash\npixi install --locked\npixi run build\npixi run test\npixi run smoke\n```\n\n#### Process a dataset\n\nProcess a dataset (from the repo root, with a pixi shell or `pixi run`):\n\n```bash\npixi run odm -- --project-path ~/datasets mydataset\n# or, after: eval \"$(pixi shell-hook)\"\n./run.py --project-path ~/datasets mydataset\n```\n\nGPU builds use the `gpu` environment: `pixi install -e gpu \u0026\u0026 pixi run -e gpu build`.\n\n## Advanced\n\n### Build Docker images from source\n\nCPU image (matches CI):\n\n```bash\npixi run docker-build\n```\n\nGPU image:\n\n```bash\npixi run docker-build -- --gpu\n```\n\nThese stamp the image with the OCI labels (revision, version, created) and tag\nit `opendronemap/odm:edge` (`:edge-gpu`) on master, or `opendronemap/odm:\u003cbranch\u003e`\noff master. Pass a custom tag or extra `docker build` flags after `--`, e.g.\n`pixi run docker-build -- -t my_odm_image --no-cache`.\n\nIf you have questions, join the developer's chat at https://community.opendronemap.org/c/developers-chat/21\n\n1. Try to keep commits clean and simple\n2. Submit a pull request with detailed changes and test results\n3. Have fun!\n\n## Credits\n\nODM makes use of [several libraries](https://github.com/OpenDroneMap/ODM/blob/master/pixi.toml) and other awesome open source projects to perform its tasks. Among them we'd like to highlight:\n\n- [OpenSfM](https://github.com/mapillary/OpenSfM)\n- [OpenMVS](https://github.com/cdcseacave/openMVS/)\n- [PDAL](https://github.com/PDAL/PDAL)\n- [Entwine](https://entwine.io/)\n- [MVS Texturing](https://github.com/nmoehrle/mvs-texturing)\n- [GRASS GIS](https://grass.osgeo.org/)\n- [GDAL](https://gdal.org/)\n- [PoissonRecon](https://github.com/mkazhdan/PoissonRecon)\n\n## Citation\n\n\u003e _OpenDroneMap Authors_ ODM - A command line toolkit to generate maps, point clouds, 3D models and DEMs from drone, balloon or kite images. **OpenDroneMap/ODM GitHub Page** 2020; [https://github.com/OpenDroneMap/ODM](https://github.com/OpenDroneMap/ODM)\n\n## Trademark\n\nSee [Trademark Guidelines](https://github.com/OpenDroneMap/documents/blob/master/TRADEMARK.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopendronemap%2Fodm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopendronemap%2Fodm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopendronemap%2Fodm/lists"}