Skip to content

Instantly share code, notes, and snippets.

@om26er
Last active December 18, 2020 21:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save om26er/ea75a255a6a0b0a4be04d4474126000a to your computer and use it in GitHub Desktop.
Save om26er/ea75a255a6a0b0a4be04d4474126000a to your computer and use it in GitHub Desktop.

Ubuntu 18.04

Install dependencies

sudo apt install build-essential pkg-config unzip yasm git gfortran libatlas-base-dev -y
snap install cmake --channel 3.14/stable --classic

Install Python 3.8

sudo apt install libssl-dev zlib1g-dev -y
wget https://www.python.org/ftp/python/3.8.6/Python-3.8.6.tar.xz
tar xf Python-3.8.6.tar.xz
cd Python-3.8.6

./configure --prefix=$PWD/../python38
make $(nproc)
make install

Create Pythonv Virtual ENV

cd ..
./python38/bin/python3.8 -m venv venv
source venv/bin/activate
pip install wheel
pip install numpy

Clone openCV

git clone -b 4.5.0 https://github.com/opencv/opencv.git --depth 1
git clone -b 4.5.0 https://github.com/opencv/opencv_contrib.git --depth 1

mkdir opencv/build
cd opencv/build

## Build openCV
cmake -D CMAKE_INSTALL_PREFIX=../../install \
  -D WITH_TBB=ON \
  -D WITH_OPENMP=ON \
  -D WITH_IPP=OFF \
  -D CMAKE_BUILD_TYPE=RELEASE \
  -D BUILD_EXAMPLES=OFF \
  -D WITH_NVCUVID=OFF \
  -D WITH_CUDA=ON \
  -D BUILD_DOCS=OFF \
  -D BUILD_PERF_TESTS=OFF \
  -D BUILD_TESTS=OFF \
  -D WITH_CSTRIPES=ON \
  -D WITH_OPENCL=ON \
  -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
  -D CUDA_ARCH_BIN="7.2" \
  -D ENABLE_PRECOMPILED_HEADERS=OFF \
  -D CUDA_ARCH_PTX="" \
  -D CMAKE_TOOLCHAIN_FILE=../platforms/linux/aarch64-gnu.toolchain.cmake \
  -D CUDA_TOOLKIT_INCLUDE=/usr/local/cuda/targets/aarch64-linux/include \
  -D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda \
  -D CUDA_CUDART_LIBRARY=/usr/local/cuda/targets/aarch64-linux/lib/libcudart.so.10.2 \
  -D CUDA_cublas_LIBRARY=/usr/local/cuda/targets/aarch64-linux/lib/stubs/libcublas.so \
  -D CUDA_cufft_LIBRARY=/usr/local/cuda/targets/aarch64-linux/lib/stubs/libcufft.so \
  -D CUDA_nppc_LIBRARY=/usr/local/cuda/targets/aarch64-linux/lib/stubs/libnppc.so \
  -D CUDA_nppial_LIBRARY=/usr/local/cuda/targets/aarch64-linux/lib/stubs/libnppial.so \
  -D CUDA_nppicc_LIBRARY=/usr/local/cuda/targets/aarch64-linux/lib/stubs/libnppicc.so \
  -D CUDA_nppicom_LIBRARY=/usr/local/cuda/targets/aarch64-linux/lib/stubs/libnppicom.so \
  -D CUDA_nppidei_LIBRARY=/usr/local/cuda/targets/aarch64-linux/lib/stubs/libnppidei.so \
  -D CUDA_nppif_LIBRARY=/usr/local/cuda/targets/aarch64-linux/lib/stubs/libnppif.so \
  -D CUDA_nppig_LIBRARY=/usr/local/cuda/targets/aarch64-linux/lib/stubs/libnppig.so \
  -D CUDA_nppim_LIBRARY=/usr/local/cuda/targets/aarch64-linux/lib/stubs/libnppim.so \
  -D CUDA_nppist_LIBRARY=/usr/local/cuda/targets/aarch64-linux/lib/stubs/libnppist.so \
  -D CUDA_nppisu_LIBRARY=/usr/local/cuda/targets/aarch64-linux/lib/stubs/libnppisu.so \
  -D CUDA_nppitc_LIBRARY=/usr/local/cuda/targets/aarch64-linux/lib/stubs/libnppitc.so \
  -D CUDA_npps_LIBRARY=/usr/local/cuda/targets/aarch64-linux/lib/stubs/libnpps.so \
  -D CUDA_CUDA_LIBRARY=/usr/local/cuda-10.2/targets/aarch64-linux/lib/stubs/libcuda.so \
  -D PYTHON3_NUMPY_INCLUDE_DIRS=$(python3 -c "import numpy; print(numpy.get_include())") \
  -D PYTHON_INCLUDE_DIR=$(python3 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") \
  -D PYTHON_LIBRARY=$(python3 -c "import distutils.sysconfig as sysconfig; print(sysconfig.get_config_var('LIBDIR'))") \
  -D PYTHON3_EXECUTABLE=$(which python3) \
  -D OPENCV_SKIP_PYTHON_LOADER=ON \
  ..

make -j$(nproc)
make install
mv ../../install/lib/python3.8/site-packages/cv2.cpython-38-x86_64-linux-gnu.so ../../install/lib/python3.8/site-packages/cv2.cpython-38-aarch64-linux-gnu.so
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment