kopia lustrzana https://github.com/OpenDroneMap/ODM
commit
bea173cfa6
|
@ -39,7 +39,7 @@ jobs:
|
||||||
uses: docker/build-push-action@v2
|
uses: docker/build-push-action@v2
|
||||||
with:
|
with:
|
||||||
file: ./portable.Dockerfile
|
file: ./portable.Dockerfile
|
||||||
platforms: linux/amd64
|
platforms: linux/amd64,linux/arm64
|
||||||
push: true
|
push: true
|
||||||
tags: |
|
tags: |
|
||||||
${{ steps.docker_meta.outputs.tags }}
|
${{ steps.docker_meta.outputs.tags }}
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
FROM ubuntu:20.04 AS builder
|
FROM ubuntu:21.04 AS builder
|
||||||
|
|
||||||
# Env variables
|
# Env variables
|
||||||
ENV DEBIAN_FRONTEND=noninteractive \
|
ENV DEBIAN_FRONTEND=noninteractive \
|
||||||
PYTHONPATH="$PYTHONPATH:/code/SuperBuild/install/lib/python3.8/dist-packages:/code/SuperBuild/src/opensfm" \
|
PYTHONPATH="$PYTHONPATH:/code/SuperBuild/install/lib/python3.9/dist-packages:/code/SuperBuild/install/lib/python3.8/dist-packages:/code/SuperBuild/src/opensfm" \
|
||||||
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/code/SuperBuild/install/lib"
|
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/code/SuperBuild/install/lib"
|
||||||
|
|
||||||
# Prepare directories
|
# Prepare directories
|
||||||
|
@ -21,11 +21,11 @@ RUN bash configure.sh clean
|
||||||
|
|
||||||
### Use a second image for the final asset to reduce the number and
|
### Use a second image for the final asset to reduce the number and
|
||||||
# size of the layers.
|
# size of the layers.
|
||||||
FROM ubuntu:20.04
|
FROM ubuntu:21.04
|
||||||
|
|
||||||
# Env variables
|
# Env variables
|
||||||
ENV DEBIAN_FRONTEND=noninteractive \
|
ENV DEBIAN_FRONTEND=noninteractive \
|
||||||
PYTHONPATH="$PYTHONPATH:/code/SuperBuild/install/lib/python3.8/dist-packages:/code/SuperBuild/src/opensfm" \
|
PYTHONPATH="$PYTHONPATH:/code/SuperBuild/install/lib/python3.9:/code/SuperBuild/install/lib/python3.8/dist-packages:/code/SuperBuild/src/opensfm" \
|
||||||
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/code/SuperBuild/install/lib"
|
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/code/SuperBuild/install/lib"
|
||||||
|
|
||||||
WORKDIR /code
|
WORKDIR /code
|
||||||
|
|
|
@ -145,7 +145,7 @@ endif()
|
||||||
|
|
||||||
externalproject_add(mve
|
externalproject_add(mve
|
||||||
GIT_REPOSITORY https://github.com/OpenDroneMap/mve.git
|
GIT_REPOSITORY https://github.com/OpenDroneMap/mve.git
|
||||||
GIT_TAG 250
|
GIT_TAG 262
|
||||||
UPDATE_COMMAND ""
|
UPDATE_COMMAND ""
|
||||||
SOURCE_DIR ${SB_SOURCE_DIR}/mve
|
SOURCE_DIR ${SB_SOURCE_DIR}/mve
|
||||||
CMAKE_ARGS ${WIN32_CMAKE_ARGS}
|
CMAKE_ARGS ${WIN32_CMAKE_ARGS}
|
||||||
|
@ -169,7 +169,7 @@ else()
|
||||||
endif()
|
endif()
|
||||||
externalproject_add(poissonrecon
|
externalproject_add(poissonrecon
|
||||||
GIT_REPOSITORY https://github.com/OpenDroneMap/PoissonRecon.git
|
GIT_REPOSITORY https://github.com/OpenDroneMap/PoissonRecon.git
|
||||||
GIT_TAG 257
|
GIT_TAG 262
|
||||||
PREFIX ${SB_BINARY_DIR}/PoissonRecon
|
PREFIX ${SB_BINARY_DIR}/PoissonRecon
|
||||||
SOURCE_DIR ${SB_SOURCE_DIR}/PoissonRecon
|
SOURCE_DIR ${SB_SOURCE_DIR}/PoissonRecon
|
||||||
UPDATE_COMMAND ""
|
UPDATE_COMMAND ""
|
||||||
|
|
|
@ -9,7 +9,7 @@ ExternalProject_Add(${_proj_name}
|
||||||
#--Download step--------------
|
#--Download step--------------
|
||||||
DOWNLOAD_DIR ${SB_DOWNLOAD_DIR}/${_proj_name}
|
DOWNLOAD_DIR ${SB_DOWNLOAD_DIR}/${_proj_name}
|
||||||
GIT_REPOSITORY https://github.com/OpenDroneMap/mvs-texturing
|
GIT_REPOSITORY https://github.com/OpenDroneMap/mvs-texturing
|
||||||
GIT_TAG 250
|
GIT_TAG 262
|
||||||
#--Update/Patch step----------
|
#--Update/Patch step----------
|
||||||
UPDATE_COMMAND ""
|
UPDATE_COMMAND ""
|
||||||
#--Configure step-------------
|
#--Configure step-------------
|
||||||
|
|
|
@ -12,6 +12,11 @@ externalproject_add(vcg
|
||||||
INSTALL_COMMAND ""
|
INSTALL_COMMAND ""
|
||||||
)
|
)
|
||||||
|
|
||||||
|
SET(ARM64_CMAKE_ARGS "")
|
||||||
|
if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch64" )
|
||||||
|
SET(ARM64_CMAKE_ARGS -DOpenMVS_USE_SSE=OFF)
|
||||||
|
endif()
|
||||||
|
|
||||||
ExternalProject_Add(${_proj_name}
|
ExternalProject_Add(${_proj_name}
|
||||||
DEPENDS ceres opencv vcg
|
DEPENDS ceres opencv vcg
|
||||||
PREFIX ${_SB_BINARY_DIR}
|
PREFIX ${_SB_BINARY_DIR}
|
||||||
|
@ -31,6 +36,7 @@ ExternalProject_Add(${_proj_name}
|
||||||
-DCMAKE_BUILD_TYPE=Release
|
-DCMAKE_BUILD_TYPE=Release
|
||||||
-DCMAKE_INSTALL_PREFIX=${SB_INSTALL_DIR}
|
-DCMAKE_INSTALL_PREFIX=${SB_INSTALL_DIR}
|
||||||
${WIN32_CMAKE_ARGS}
|
${WIN32_CMAKE_ARGS}
|
||||||
|
${ARM64_CMAKE_ARGS}
|
||||||
#--Build step-----------------
|
#--Build step-----------------
|
||||||
BINARY_DIR ${_SB_BINARY_DIR}
|
BINARY_DIR ${_SB_BINARY_DIR}
|
||||||
#--Install step---------------
|
#--Install step---------------
|
||||||
|
|
|
@ -19,7 +19,7 @@ ExternalProject_Add(${_proj_name}
|
||||||
#--Download step--------------
|
#--Download step--------------
|
||||||
DOWNLOAD_DIR ${SB_DOWNLOAD_DIR}
|
DOWNLOAD_DIR ${SB_DOWNLOAD_DIR}
|
||||||
GIT_REPOSITORY https://github.com/OpenDroneMap/OpenSfM/
|
GIT_REPOSITORY https://github.com/OpenDroneMap/OpenSfM/
|
||||||
GIT_TAG 261
|
GIT_TAG 262
|
||||||
#--Update/Patch step----------
|
#--Update/Patch step----------
|
||||||
UPDATE_COMMAND git submodule update --init --recursive
|
UPDATE_COMMAND git submodule update --init --recursive
|
||||||
#--Configure step-------------
|
#--Configure step-------------
|
||||||
|
|
2
VERSION
2
VERSION
|
@ -1 +1 @@
|
||||||
2.6.1
|
2.6.2
|
||||||
|
|
27
configure.sh
27
configure.sh
|
@ -3,21 +3,21 @@
|
||||||
# Ensure the DEBIAN_FRONTEND environment variable is set for apt-get calls
|
# Ensure the DEBIAN_FRONTEND environment variable is set for apt-get calls
|
||||||
APT_GET="env DEBIAN_FRONTEND=noninteractive $(command -v apt-get)"
|
APT_GET="env DEBIAN_FRONTEND=noninteractive $(command -v apt-get)"
|
||||||
|
|
||||||
check_version(){
|
check_version(){
|
||||||
UBUNTU_VERSION=$(lsb_release -r)
|
export UBUNTU_VERSION=$(lsb_release -r)
|
||||||
case "$UBUNTU_VERSION" in
|
case "$UBUNTU_VERSION" in
|
||||||
*"20.04"*)
|
*"20.04"*|*"21.04"*)
|
||||||
echo "Ubuntu: $UBUNTU_VERSION, good!"
|
echo "Ubuntu: $UBUNTU_VERSION, good!"
|
||||||
;;
|
;;
|
||||||
*"18.04"*|*"16.04"*)
|
*"18.04"*|*"16.04"*)
|
||||||
echo "ODM 2.1 has upgraded to Ubuntu 20.04, but you're on $UBUNTU_VERSION"
|
echo "ODM 2.1 has upgraded to Ubuntu 21.04, but you're on $UBUNTU_VERSION"
|
||||||
echo "* The last version of ODM that supports Ubuntu 16.04 is v1.0.2."
|
echo "* The last version of ODM that supports Ubuntu 16.04 is v1.0.2."
|
||||||
echo "* The last version of ODM that supports Ubuntu 18.04 is v2.0.0."
|
echo "* The last version of ODM that supports Ubuntu 18.04 is v2.0.0."
|
||||||
echo "We recommend you to upgrade, or better yet, use docker."
|
echo "We recommend you to upgrade, or better yet, use docker."
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "You are not on Ubuntu 20.04 (detected: $UBUNTU_VERSION)"
|
echo "You are not on Ubuntu 21.04 (detected: $UBUNTU_VERSION)"
|
||||||
echo "It might be possible to run ODM on a newer version of Ubuntu, however, you cannot rely on this script."
|
echo "It might be possible to run ODM on a newer version of Ubuntu, however, you cannot rely on this script."
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
|
@ -54,10 +54,12 @@ ensure_prereqs() {
|
||||||
echo "Installing tzdata"
|
echo "Installing tzdata"
|
||||||
sudo $APT_GET install -y -qq tzdata
|
sudo $APT_GET install -y -qq tzdata
|
||||||
|
|
||||||
echo "Enabling PPA for Ubuntu GIS"
|
if [[ "$UBUNTU_VERSION" == *"20.04"* ]]; then
|
||||||
sudo $APT_GET install -y -qq --no-install-recommends software-properties-common
|
echo "Enabling PPA for Ubuntu GIS"
|
||||||
sudo add-apt-repository -y ppa:ubuntugis/ubuntugis-unstable
|
sudo $APT_GET install -y -qq --no-install-recommends software-properties-common
|
||||||
sudo $APT_GET update
|
sudo add-apt-repository -y ppa:ubuntugis/ubuntugis-unstable
|
||||||
|
sudo $APT_GET update
|
||||||
|
fi
|
||||||
|
|
||||||
echo "Installing Python PIP"
|
echo "Installing Python PIP"
|
||||||
sudo $APT_GET install -y -qq --no-install-recommends \
|
sudo $APT_GET install -y -qq --no-install-recommends \
|
||||||
|
@ -77,7 +79,12 @@ installdepsfromsnapcraft() {
|
||||||
*) key=build-packages; ;; # shouldn't be needed, but it's here just in case
|
*) key=build-packages; ;; # shouldn't be needed, but it's here just in case
|
||||||
esac
|
esac
|
||||||
|
|
||||||
cat snap/snapcraft.yaml | \
|
SNAPCRAFT_FILE="snapcraft.yaml"
|
||||||
|
if [[ "$UBUNTU_VERSION" == *"21.04"* ]]; then
|
||||||
|
SNAPCRAFT_FILE="snapcraft21.yaml"
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat snap/$SNAPCRAFT_FILE | \
|
||||||
shyaml get-values-0 parts.$section.$key | \
|
shyaml get-values-0 parts.$section.$key | \
|
||||||
xargs -0 sudo $APT_GET install -y -qq --no-install-recommends
|
xargs -0 sudo $APT_GET install -y -qq --no-install-recommends
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,4 +9,9 @@ do
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
/usr/bin/g++_real -march=nehalem "${args[@]}"
|
ARCH=nehalem
|
||||||
|
if [[ $(uname -m) == "aarch64" ]]; then
|
||||||
|
ARCH=armv8-a
|
||||||
|
fi
|
||||||
|
|
||||||
|
/usr/bin/g++_real -march=$ARCH "${args[@]}"
|
||||||
|
|
|
@ -9,4 +9,9 @@ do
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
/usr/bin/gcc_real -march=nehalem "${args[@]}"
|
ARCH=nehalem
|
||||||
|
if [[ $(uname -m) == "aarch64" ]]; then
|
||||||
|
ARCH=armv8-a
|
||||||
|
fi
|
||||||
|
|
||||||
|
/usr/bin/gcc_real -march=$ARCH "${args[@]}"
|
||||||
|
|
|
@ -2,7 +2,7 @@ FROM nvidia/cuda:11.2.0-runtime-ubuntu20.04 AS builder
|
||||||
|
|
||||||
# Env variables
|
# Env variables
|
||||||
ENV DEBIAN_FRONTEND=noninteractive \
|
ENV DEBIAN_FRONTEND=noninteractive \
|
||||||
PYTHONPATH="$PYTHONPATH:/code/SuperBuild/install/lib/python3.8/dist-packages:/code/SuperBuild/src/opensfm" \
|
PYTHONPATH="$PYTHONPATH:/code/SuperBuild/install/lib/python3.9/dist-packages:/code/SuperBuild/install/lib/python3.8/dist-packages:/code/SuperBuild/src/opensfm" \
|
||||||
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/code/SuperBuild/install/lib"
|
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/code/SuperBuild/install/lib"
|
||||||
|
|
||||||
# Prepare directories
|
# Prepare directories
|
||||||
|
@ -25,7 +25,7 @@ FROM nvidia/cuda:11.2.0-runtime-ubuntu20.04
|
||||||
|
|
||||||
# Env variables
|
# Env variables
|
||||||
ENV DEBIAN_FRONTEND=noninteractive \
|
ENV DEBIAN_FRONTEND=noninteractive \
|
||||||
PYTHONPATH="$PYTHONPATH:/code/SuperBuild/install/lib/python3.8/dist-packages:/code/SuperBuild/src/opensfm" \
|
PYTHONPATH="$PYTHONPATH:/code/SuperBuild/install/lib/python3.9/dist-packages:/code/SuperBuild/install/lib/python3.8/dist-packages:/code/SuperBuild/src/opensfm" \
|
||||||
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/code/SuperBuild/install/lib"
|
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/code/SuperBuild/install/lib"
|
||||||
|
|
||||||
WORKDIR /code
|
WORKDIR /code
|
||||||
|
|
|
@ -11,6 +11,7 @@ superbuild_bin_path = os.path.join(superbuild_path, 'install', 'bin')
|
||||||
|
|
||||||
# add opencv,opensfm to python path
|
# add opencv,opensfm to python path
|
||||||
python_packages_paths = [os.path.join(superbuild_path, p) for p in [
|
python_packages_paths = [os.path.join(superbuild_path, p) for p in [
|
||||||
|
'install/lib/python3.9/dist-packages',
|
||||||
'install/lib/python3.8/dist-packages',
|
'install/lib/python3.8/dist-packages',
|
||||||
'install/lib/python3/dist-packages',
|
'install/lib/python3/dist-packages',
|
||||||
'install/bin/opensfm'
|
'install/bin/opensfm'
|
||||||
|
|
|
@ -12,7 +12,7 @@ from opendm import system
|
||||||
from opendm.concurrency import get_max_memory, parallel_map
|
from opendm.concurrency import get_max_memory, parallel_map
|
||||||
from scipy import ndimage
|
from scipy import ndimage
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from osgeo.utils.gdal_fillnodata import main as gdal_fillnodata
|
from opendm.vendor.gdal_fillnodata import main as gdal_fillnodata
|
||||||
from opendm import log
|
from opendm import log
|
||||||
try:
|
try:
|
||||||
import Queue as queue
|
import Queue as queue
|
||||||
|
|
|
@ -0,0 +1,216 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
# ******************************************************************************
|
||||||
|
# $Id: gdal_fillnodata.py 124baa7f71f15396a661014a81b6c5b0c82c8004 2020-10-14 17:29:39 +0300 Idan Miara $
|
||||||
|
#
|
||||||
|
# Project: GDAL Python Interface
|
||||||
|
# Purpose: Application for filling nodata areas in a raster by interpolation
|
||||||
|
# Author: Frank Warmerdam, warmerdam@pobox.com
|
||||||
|
#
|
||||||
|
# ******************************************************************************
|
||||||
|
# Copyright (c) 2008, Frank Warmerdam
|
||||||
|
# Copyright (c) 2009-2011, Even Rouault <even dot rouault at spatialys.com>
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and associated documentation files (the "Software"),
|
||||||
|
# to deal in the Software without restriction, including without limitation
|
||||||
|
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
# and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
# Software is furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included
|
||||||
|
# in all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
|
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
# DEALINGS IN THE SOFTWARE.
|
||||||
|
# ******************************************************************************
|
||||||
|
|
||||||
|
import sys
|
||||||
|
|
||||||
|
from osgeo import gdal
|
||||||
|
|
||||||
|
|
||||||
|
def CopyBand(srcband, dstband):
|
||||||
|
for line in range(srcband.YSize):
|
||||||
|
line_data = srcband.ReadRaster(0, line, srcband.XSize, 1)
|
||||||
|
dstband.WriteRaster(0, line, srcband.XSize, 1, line_data,
|
||||||
|
buf_type=srcband.DataType)
|
||||||
|
|
||||||
|
|
||||||
|
def Usage():
|
||||||
|
print("""
|
||||||
|
gdal_fillnodata [-q] [-md max_distance] [-si smooth_iterations]
|
||||||
|
[-o name=value] [-b band]
|
||||||
|
srcfile [-nomask] [-mask filename] [-of format] [-co name=value]* [dstfile]
|
||||||
|
""")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
def main(argv):
|
||||||
|
max_distance = 100
|
||||||
|
smoothing_iterations = 0
|
||||||
|
options = []
|
||||||
|
quiet_flag = 0
|
||||||
|
src_filename = None
|
||||||
|
src_band = 1
|
||||||
|
|
||||||
|
dst_filename = None
|
||||||
|
frmt = 'GTiff'
|
||||||
|
creation_options = []
|
||||||
|
|
||||||
|
mask = 'default'
|
||||||
|
|
||||||
|
gdal.AllRegister()
|
||||||
|
argv = gdal.GeneralCmdLineProcessor(argv)
|
||||||
|
if argv is None:
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
# Parse command line arguments.
|
||||||
|
i = 1
|
||||||
|
while i < len(argv):
|
||||||
|
arg = argv[i]
|
||||||
|
|
||||||
|
if arg == '-of' or arg == '-f':
|
||||||
|
i = i + 1
|
||||||
|
frmt = argv[i]
|
||||||
|
|
||||||
|
elif arg == '-co':
|
||||||
|
i = i + 1
|
||||||
|
creation_options.append(argv[i])
|
||||||
|
|
||||||
|
elif arg == '-q' or arg == '-quiet':
|
||||||
|
quiet_flag = 1
|
||||||
|
|
||||||
|
elif arg == '-si':
|
||||||
|
i = i + 1
|
||||||
|
smoothing_iterations = int(argv[i])
|
||||||
|
|
||||||
|
elif arg == '-b':
|
||||||
|
i = i + 1
|
||||||
|
src_band = int(argv[i])
|
||||||
|
|
||||||
|
elif arg == '-md':
|
||||||
|
i = i + 1
|
||||||
|
max_distance = float(argv[i])
|
||||||
|
|
||||||
|
elif arg == '-nomask':
|
||||||
|
mask = 'none'
|
||||||
|
|
||||||
|
elif arg == '-mask':
|
||||||
|
i = i + 1
|
||||||
|
mask = argv[i]
|
||||||
|
|
||||||
|
elif arg == '-mask':
|
||||||
|
i = i + 1
|
||||||
|
mask = argv[i]
|
||||||
|
|
||||||
|
elif arg[:2] == '-h':
|
||||||
|
Usage()
|
||||||
|
|
||||||
|
elif src_filename is None:
|
||||||
|
src_filename = argv[i]
|
||||||
|
|
||||||
|
elif dst_filename is None:
|
||||||
|
dst_filename = argv[i]
|
||||||
|
|
||||||
|
else:
|
||||||
|
Usage()
|
||||||
|
|
||||||
|
i = i + 1
|
||||||
|
|
||||||
|
if src_filename is None:
|
||||||
|
Usage()
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# Verify we have next gen bindings with the sievefilter method.
|
||||||
|
# =============================================================================
|
||||||
|
try:
|
||||||
|
gdal.FillNodata
|
||||||
|
except AttributeError:
|
||||||
|
print('')
|
||||||
|
print('gdal.FillNodata() not available. You are likely using "old gen"')
|
||||||
|
print('bindings or an older version of the next gen bindings.')
|
||||||
|
print('')
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# Open source file
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
if dst_filename is None:
|
||||||
|
src_ds = gdal.Open(src_filename, gdal.GA_Update)
|
||||||
|
else:
|
||||||
|
src_ds = gdal.Open(src_filename, gdal.GA_ReadOnly)
|
||||||
|
|
||||||
|
if src_ds is None:
|
||||||
|
print('Unable to open %s' % src_filename)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
srcband = src_ds.GetRasterBand(src_band)
|
||||||
|
|
||||||
|
if mask == 'default':
|
||||||
|
maskband = srcband.GetMaskBand()
|
||||||
|
elif mask == 'none':
|
||||||
|
maskband = None
|
||||||
|
else:
|
||||||
|
mask_ds = gdal.Open(mask)
|
||||||
|
maskband = mask_ds.GetRasterBand(1)
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# Create output file if one is specified.
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
if dst_filename is not None:
|
||||||
|
|
||||||
|
drv = gdal.GetDriverByName(frmt)
|
||||||
|
dst_ds = drv.Create(dst_filename, src_ds.RasterXSize, src_ds.RasterYSize, 1,
|
||||||
|
srcband.DataType, creation_options)
|
||||||
|
wkt = src_ds.GetProjection()
|
||||||
|
if wkt != '':
|
||||||
|
dst_ds.SetProjection(wkt)
|
||||||
|
gt = src_ds.GetGeoTransform(can_return_null=True)
|
||||||
|
if gt:
|
||||||
|
dst_ds.SetGeoTransform(gt)
|
||||||
|
|
||||||
|
dstband = dst_ds.GetRasterBand(1)
|
||||||
|
CopyBand(srcband, dstband)
|
||||||
|
ndv = srcband.GetNoDataValue()
|
||||||
|
if ndv is not None:
|
||||||
|
dstband.SetNoDataValue(ndv)
|
||||||
|
|
||||||
|
color_interp = srcband.GetColorInterpretation()
|
||||||
|
dstband.SetColorInterpretation(color_interp)
|
||||||
|
if color_interp == gdal.GCI_PaletteIndex:
|
||||||
|
color_table = srcband.GetColorTable()
|
||||||
|
dstband.SetColorTable(color_table)
|
||||||
|
|
||||||
|
else:
|
||||||
|
dstband = srcband
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# Invoke algorithm.
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
if quiet_flag:
|
||||||
|
prog_func = None
|
||||||
|
else:
|
||||||
|
prog_func = gdal.TermProgress_nocb
|
||||||
|
|
||||||
|
result = gdal.FillNodata(dstband, maskband,
|
||||||
|
max_distance, smoothing_iterations, options,
|
||||||
|
callback=prog_func)
|
||||||
|
|
||||||
|
|
||||||
|
src_ds = None
|
||||||
|
dst_ds = None
|
||||||
|
mask_ds = None
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
sys.exit(main(sys.argv))
|
|
@ -1,8 +1,8 @@
|
||||||
FROM ubuntu:20.04 AS builder
|
FROM ubuntu:21.04 AS builder
|
||||||
|
|
||||||
# Env variables
|
# Env variables
|
||||||
ENV DEBIAN_FRONTEND=noninteractive \
|
ENV DEBIAN_FRONTEND=noninteractive \
|
||||||
PYTHONPATH="$PYTHONPATH:/code/SuperBuild/install/lib/python3.8/dist-packages:/code/SuperBuild/src/opensfm" \
|
PYTHONPATH="$PYTHONPATH:/code/SuperBuild/install/lib/python3.9/dist-packages:/code/SuperBuild/install/lib/python3.8/dist-packages:/code/SuperBuild/src/opensfm" \
|
||||||
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/code/SuperBuild/install/lib"
|
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/code/SuperBuild/install/lib"
|
||||||
|
|
||||||
# Prepare directories
|
# Prepare directories
|
||||||
|
@ -21,11 +21,11 @@ RUN bash configure.sh clean
|
||||||
|
|
||||||
### Use a second image for the final asset to reduce the number and
|
### Use a second image for the final asset to reduce the number and
|
||||||
# size of the layers.
|
# size of the layers.
|
||||||
FROM ubuntu:20.04
|
FROM ubuntu:21.04
|
||||||
|
|
||||||
# Env variables
|
# Env variables
|
||||||
ENV DEBIAN_FRONTEND=noninteractive \
|
ENV DEBIAN_FRONTEND=noninteractive \
|
||||||
PYTHONPATH="$PYTHONPATH:/code/SuperBuild/install/lib/python3.8/dist-packages:/code/SuperBuild/src/opensfm" \
|
PYTHONPATH="$PYTHONPATH:/code/SuperBuild/install/lib/python3.9/dist-packages:/code/SuperBuild/install/lib/python3.8/dist-packages:/code/SuperBuild/src/opensfm" \
|
||||||
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/code/SuperBuild/install/lib"
|
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/code/SuperBuild/install/lib"
|
||||||
|
|
||||||
WORKDIR /code
|
WORKDIR /code
|
||||||
|
|
|
@ -11,7 +11,7 @@ laspy==1.7.0
|
||||||
lxml==4.6.1
|
lxml==4.6.1
|
||||||
matplotlib==3.3.3
|
matplotlib==3.3.3
|
||||||
networkx==2.5
|
networkx==2.5
|
||||||
numpy==1.19.4
|
numpy==1.21.1
|
||||||
Pillow==8.0.1
|
Pillow==8.0.1
|
||||||
vmem==1.0.1
|
vmem==1.0.1
|
||||||
pyodm==1.5.6
|
pyodm==1.5.6
|
||||||
|
|
3
run.py
3
run.py
|
@ -6,6 +6,7 @@ if sys.version_info.major < 3:
|
||||||
print("Ups! ODM needs to run with Python 3. It seems you launched it with Python 2. Try using: python3 run.py ... ")
|
print("Ups! ODM needs to run with Python 3. It seems you launched it with Python 2. Try using: python3 run.py ... ")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
import os
|
||||||
from opendm import log
|
from opendm import log
|
||||||
from opendm import config
|
from opendm import config
|
||||||
from opendm import system
|
from opendm import system
|
||||||
|
@ -14,8 +15,6 @@ from opendm.progress import progressbc
|
||||||
from opendm.utils import double_quote, get_processing_results_paths
|
from opendm.utils import double_quote, get_processing_results_paths
|
||||||
from opendm.loghelpers import args_to_dict
|
from opendm.loghelpers import args_to_dict
|
||||||
|
|
||||||
import os
|
|
||||||
|
|
||||||
from stages.odm_app import ODMApp
|
from stages.odm_app import ODMApp
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
|
@ -61,6 +61,7 @@ parts:
|
||||||
- libspqr2
|
- libspqr2
|
||||||
- libssl1.1
|
- libssl1.1
|
||||||
- libusb-1.0-0
|
- libusb-1.0-0
|
||||||
|
- proj-data
|
||||||
- procps
|
- procps
|
||||||
- python3
|
- python3
|
||||||
- python3-distutils
|
- python3-distutils
|
||||||
|
|
|
@ -0,0 +1,228 @@
|
||||||
|
name: opendronemap
|
||||||
|
adopt-info: odm
|
||||||
|
grade: stable
|
||||||
|
confinement: strict
|
||||||
|
base: core21
|
||||||
|
|
||||||
|
summary: Command line toolkit for processing aerial drone imagery
|
||||||
|
description: >
|
||||||
|
An open source command line toolkit for processing aerial drone imagery. ODM turns simple 2D images into:
|
||||||
|
|
||||||
|
* Classified Point Clouds
|
||||||
|
* 3D Textured Models
|
||||||
|
* Georeferenced Orthorectified Imagery
|
||||||
|
* Georeferenced Digital Elevation Models
|
||||||
|
|
||||||
|
The 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.
|
||||||
|
|
||||||
|
# The UbuntuGIS PPA only has i386 and amd64 packages so we can't build any
|
||||||
|
# other architectures. Therefore let's limit to those here.
|
||||||
|
architectures:
|
||||||
|
- build-on: i386
|
||||||
|
run-on: i386
|
||||||
|
- build-on: amd64
|
||||||
|
run-on: amd64
|
||||||
|
|
||||||
|
package-repositories:
|
||||||
|
- type: apt
|
||||||
|
ppa: ubuntugis/ubuntugis-unstable
|
||||||
|
|
||||||
|
parts:
|
||||||
|
prereqs:
|
||||||
|
source: .
|
||||||
|
plugin: nil
|
||||||
|
build-packages:
|
||||||
|
- build-essential
|
||||||
|
- cmake
|
||||||
|
- gdal-bin
|
||||||
|
- gfortran # to build scipy
|
||||||
|
- git
|
||||||
|
- libboost-log-dev
|
||||||
|
- libgdal-dev
|
||||||
|
- libgeotiff-dev
|
||||||
|
- libjsoncpp-dev
|
||||||
|
- libssl-dev
|
||||||
|
- libusb-1.0-0-dev
|
||||||
|
- ninja-build
|
||||||
|
- pkg-config
|
||||||
|
- python3-dev
|
||||||
|
- python3-gdal
|
||||||
|
- python3-pip
|
||||||
|
- python3-setuptools
|
||||||
|
- python3-wheel
|
||||||
|
- rsync
|
||||||
|
- swig3.0
|
||||||
|
stage-packages:
|
||||||
|
- gdal-bin
|
||||||
|
- libboost-log1.74.0
|
||||||
|
- libgdal28
|
||||||
|
- libgeotiff5
|
||||||
|
- libjsoncpp24
|
||||||
|
- libspqr2
|
||||||
|
- libssl1.1
|
||||||
|
- libusb-1.0-0
|
||||||
|
- proj-data
|
||||||
|
- procps
|
||||||
|
- python3
|
||||||
|
- python3-distutils
|
||||||
|
- python3-gdal
|
||||||
|
- python3-pkg-resources # required base package for core20
|
||||||
|
- python3-requests # required base package for core20
|
||||||
|
- python3-setuptools
|
||||||
|
stage:
|
||||||
|
# remove deb-based numpy because it conflicts with our pip-installed version
|
||||||
|
- -usr/lib/python3/dist-packages/numpy
|
||||||
|
|
||||||
|
opencv:
|
||||||
|
source: .
|
||||||
|
plugin: nil
|
||||||
|
build-packages:
|
||||||
|
- libavcodec-dev
|
||||||
|
- libavformat-dev
|
||||||
|
- libeigen3-dev
|
||||||
|
- libflann-dev
|
||||||
|
- libgtk2.0-dev
|
||||||
|
- libjpeg-dev
|
||||||
|
- liblapack-dev
|
||||||
|
- libopenjpip7
|
||||||
|
- libpng-dev
|
||||||
|
- libproj-dev
|
||||||
|
- libswscale-dev
|
||||||
|
- libtbb-dev
|
||||||
|
- libtiff-dev
|
||||||
|
- libxext-dev
|
||||||
|
- proj-bin
|
||||||
|
stage-packages:
|
||||||
|
- libavcodec58
|
||||||
|
- libavformat58
|
||||||
|
- libflann1.9
|
||||||
|
- libgtk2.0-0
|
||||||
|
- libjpeg-turbo8
|
||||||
|
- libopenjpip7
|
||||||
|
- liblapack3
|
||||||
|
- libpng16-16
|
||||||
|
- libproj19
|
||||||
|
- libswscale5
|
||||||
|
- libtbb2
|
||||||
|
- libtiff5
|
||||||
|
- libwebpdemux2
|
||||||
|
- libxext6
|
||||||
|
|
||||||
|
openmvs:
|
||||||
|
source: .
|
||||||
|
plugin: nil
|
||||||
|
build-packages:
|
||||||
|
- libcgal-dev
|
||||||
|
- libboost-program-options-dev
|
||||||
|
stage-packages:
|
||||||
|
- libboost-program-options1.74.0
|
||||||
|
|
||||||
|
opensfm:
|
||||||
|
source: .
|
||||||
|
plugin: nil
|
||||||
|
build-packages:
|
||||||
|
- libboost-date-time-dev
|
||||||
|
- libboost-filesystem-dev
|
||||||
|
- libboost-iostreams-dev
|
||||||
|
- libboost-python-dev
|
||||||
|
- libboost-regex-dev
|
||||||
|
- libboost-serialization-dev
|
||||||
|
- libboost-system-dev
|
||||||
|
- libboost-thread-dev
|
||||||
|
- libgoogle-glog-dev
|
||||||
|
- libsuitesparse-dev
|
||||||
|
stage-packages:
|
||||||
|
- libamd2
|
||||||
|
- libboost-date-time1.74.0
|
||||||
|
- libboost-filesystem1.74.0
|
||||||
|
- libboost-iostreams1.74.0
|
||||||
|
- libboost-python1.74.0
|
||||||
|
- libboost-regex1.74.0
|
||||||
|
- libboost-serialization1.74.0
|
||||||
|
- libboost-system1.74.0
|
||||||
|
- libboost-thread1.74.0
|
||||||
|
- libcamd2
|
||||||
|
- libccolamd2
|
||||||
|
- libcholmod3
|
||||||
|
- libcolamd2
|
||||||
|
- libcxsparse3
|
||||||
|
- libgoogle-glog0v5
|
||||||
|
- libsuitesparseconfig5
|
||||||
|
|
||||||
|
odm:
|
||||||
|
after:
|
||||||
|
- prereqs
|
||||||
|
- opencv
|
||||||
|
- opensfm
|
||||||
|
- openmvs
|
||||||
|
source: .
|
||||||
|
plugin: nil # We will script everything ourselves
|
||||||
|
build-environment:
|
||||||
|
# Set Python location to build host's system so that we can
|
||||||
|
# use system libraries while building the Snap Package
|
||||||
|
- PYTHONHOME: /usr
|
||||||
|
# Set the location for pip to install requirements into inside
|
||||||
|
# the Snap package
|
||||||
|
- PYTHONUSERBASE: $SNAPCRAFT_PART_INSTALL
|
||||||
|
override-build: |
|
||||||
|
snapcraftctl set-version $(cat VERSION)
|
||||||
|
|
||||||
|
# Portable build
|
||||||
|
test -f /usr/bin/gcc_real || mv -v /usr/bin/gcc /usr/bin/gcc_real
|
||||||
|
test -f /usr/bin/gcc || cp -v ./docker/gcc /usr/bin/gcc
|
||||||
|
test -f /usr/bin/g++_real || mv -v /usr/bin/g++ /usr/bin/g++_real
|
||||||
|
test -f /usr/bin/g++ || cp -v ./docker/g++ /usr/bin/g++
|
||||||
|
|
||||||
|
pip3 install --user -r requirements.txt
|
||||||
|
|
||||||
|
# Build the SuperBuild libraries
|
||||||
|
mkdir -p SuperBuild/build
|
||||||
|
cd SuperBuild/build
|
||||||
|
cmake -G Ninja ..
|
||||||
|
cmake --build . --parallel 1
|
||||||
|
|
||||||
|
rsync -av --exclude .git \
|
||||||
|
$SNAPCRAFT_PART_BUILD/ $SNAPCRAFT_PART_INSTALL/odm/
|
||||||
|
chmod -R u=rwX,go=rX $PYTHONUSERBASE/lib/python*
|
||||||
|
stage:
|
||||||
|
# strip the temporary build files and sources
|
||||||
|
- -odm/SuperBuild/build
|
||||||
|
- -odm/SuperBuild/download
|
||||||
|
- -odm/SuperBuild/src
|
||||||
|
prime:
|
||||||
|
# remove any static-libraries
|
||||||
|
- -**/*.a
|
||||||
|
# remove any header files
|
||||||
|
- -**/*.h
|
||||||
|
# remove any left-over temporary compiled 'object' files
|
||||||
|
- -**/*.o
|
||||||
|
build-snaps:
|
||||||
|
- cmake
|
||||||
|
|
||||||
|
snap-specifics:
|
||||||
|
source: snap/local
|
||||||
|
plugin: dump
|
||||||
|
|
||||||
|
snapcraft-preload:
|
||||||
|
source: https://github.com/sergiusens/snapcraft-preload.git
|
||||||
|
plugin: cmake
|
||||||
|
cmake-parameters:
|
||||||
|
- -DCMAKE_INSTALL_PREFIX=/
|
||||||
|
build-packages:
|
||||||
|
- on amd64:
|
||||||
|
- gcc-multilib
|
||||||
|
- g++-multilib
|
||||||
|
|
||||||
|
apps:
|
||||||
|
opendronemap:
|
||||||
|
command: odm/run.sh
|
||||||
|
command-chain:
|
||||||
|
- bin/snapcraft-preload # Fixes multiprocessing python module
|
||||||
|
environment:
|
||||||
|
# Ensure libraries are found
|
||||||
|
LD_LIBRARY_PATH: $SNAP/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/blas:$SNAP/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/lapack:$LD_LIBRARY_PATH
|
||||||
|
plugs:
|
||||||
|
- home
|
||||||
|
- network
|
||||||
|
- network-bind
|
||||||
|
- removable-media
|
Ładowanie…
Reference in New Issue