Skip to content

Instantly share code, notes, and snippets.

@carlobrok
Last active October 19, 2020 10:38
Show Gist options
  • Save carlobrok/5ef2f6224bb9a6ae3525a3813f5f44d0 to your computer and use it in GitHub Desktop.
Save carlobrok/5ef2f6224bb9a6ae3525a3813f5f44d0 to your computer and use it in GitHub Desktop.
RaspberryPi OpenCV installation script
#!/bin/bash
# SCRIPT OPTIONS
OPENCV_VERSION='4.4.0' # Version to be installed
BUILD_PATH=${1:-$PWD}
check_yn() {
while true; do
read -p "$1 [y]es/[n]o " yn
case $yn in
[Yy]* ) return 0;;
[Nn]* ) return 1;;
* ) echo "Please answer [y]es or [n]o.";;
esac
done
}
download_library() {
wget https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.zip
unzip ${OPENCV_VERSION}.zip && rm ${OPENCV_VERSION}.zip
mv opencv-${OPENCV_VERSION} opencv
if [ $OPENCV_CONTRIB = 'YES' ]; then
wget https://github.com/opencv/opencv_contrib/archive/${OPENCV_VERSION}.zip
unzip ${OPENCV_VERSION}.zip && rm ${OPENCV_VERSION}.zip
mv opencv_contrib-${OPENCV_VERSION} opencv/opencv_contrib
fi
}
echo "OpenCV $OPENCV_VERSION installer"
if check_yn 'Install OpenCV extra modules?'; then
OPENCV_CONTRIB='YES'
else
OPENCV_CONTRIB='NO'
fi
if check_yn 'Update system and install dependencies?'; then
# KEEP UBUNTU OR DEBIAN UP TO DATE
sudo apt-get -y update
# sudo apt-get -y upgrade # Uncomment to install new versions of packages currently installed
# sudo apt-get -y dist-upgrade # Uncomment to handle changing dependencies with new vers. of pack.
# sudo apt-get -y autoremove # Uncomment to remove packages that are now no longer needed
# INSTALL THE DEPENDENCIES
# Build tools:
sudo apt-get install -y build-essential cmake
# GUI (if you want GTK, change 'qt5-default' to 'libgtkglext1-dev' and remove '-DWITH_QT=ON'):
sudo apt-get install -y qt5-default libvtk6-dev
# Media I/O:
sudo apt-get install -y zlib1g-dev libjpeg-dev libwebp-dev libpng-dev libtiff5-dev libjasper-dev \
libopenexr-dev libgdal-dev
# Video I/O:
sudo apt-get install -y libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev \
libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev yasm \
libopencore-amrnb-dev libopencore-amrwb-dev libv4l-dev libxine2-dev
# Parallelism and linear algebra libraries:
sudo apt-get install -y libtbb-dev libeigen3-dev
# Python:
sudo apt-get install -y python-dev python-tk pylint python-numpy \
python3-dev python3-tk pylint3 python3-numpy flake8
# Java:
#sudo apt-get install -y ant default-jdk
# Documentation and other:
#sudo apt-get install -y doxygen unzip wget
echo ""
fi
echo "Change dir to $BUILD_PATH"
cd $BUILD_PATH
if [ -d "./opencv" ]; then
echo "Source directory opencv/ already exists"
if check_yn "Delete whole directory and redownload OpenCV?"; then
rm -r opencv/
if [ $? ]; then
echo "opencv/ removed."
download_library
else
echo "Error removing $PWD/opencv - exit installation"
exit
fi
fi
else
download_library
fi
echo ""
# INSTALL THE LIBRARY
cd opencv
if [ -d "./build" ]; then
echo "Folder $PWD/build already exists."
echo "Either continue building OpenCV [y] or delete build/ directory and rebuild OpenCV [n]."
if check_yn 'Continue building?'; then
echo "continue building"
else
rm -rf build/ && mkdir build
echo "Rebuilding OpenCV.."
echo "Deleted $PWD/build/"
fi
else
echo "Building OpenCV.."
mkdir build
fi
echo "Create and change dir to $PWD/build/"
cd build
echo ""
if [ $OPENCV_CONTRIB = 'NO' ]; then
cmake -DWITH_QT=ON -DWITH_OPENGL=ON -DFORCE_VTK=ON -DWITH_TBB=ON -DWITH_GDAL=ON \
-DWITH_XINE=ON -DENABLE_PRECOMPILED_HEADERS=OFF ..
fi
if [ $OPENCV_CONTRIB = 'YES' ]; then
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules \
-D ENABLE_NEON=ON -D ENABLE_VFPV3=ON \
-D WITH_OPENMP=ON -D BUILD_TIFF=ON -D WITH_FFMPEG=ON -D WITH_GSTREAMER=ON -D WITH_TBB=ON \
-D BUILD_TBB=ON -D BUILD_TESTS=OFF -D WITH_EIGEN=OFF -D WITH_V4L=ON \
-D WITH_LIBV4L=ON -D WITH_VTK=OFF -D WITH_QT=ON -D OPENCV_ENABLE_NONFREE=ON \
-D INSTALL_C_EXAMPLES=OFF -D INSTALL_PYTHON_EXAMPLES=OFF -D BUILD_NEW_PYTHON_SUPPORT=ON \
-D BUILD_opencv_python3=TRUE -D OPENCV_GENERATE_PKGCONFIG=ON -D BUILD_EXAMPLES=OFF \
-D PYTHON_DEFAULT_EXECUTABLE=$(which python3) ..
fi
if [ $? ]; then
echo "Finished cmake. Check configuration"
if ! check_yn 'Continue?'; then
echo "Installation aborted"
exit
fi
else
echo "cmake failed"
fi
make -j8
if [ $? ]; then
echo "Installing OpenCV"
sudo make install
sudo ldconfig
if ! [ -d "/usr/local/include/opencv2" ]; then
cd /usr/local/include
sudo ln -s opencv4/opencv2/ opencv2
fi
else
echo "Build failed"
exit
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment