Last active
October 19, 2020 10:38
-
-
Save carlobrok/5ef2f6224bb9a6ae3525a3813f5f44d0 to your computer and use it in GitHub Desktop.
RaspberryPi OpenCV installation script
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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