Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save Kampi/f8ac3bbc621311ba7c932976276261bf to your computer and use it in GitHub Desktop.
Save Kampi/f8ac3bbc621311ba7c932976276261bf to your computer and use it in GitHub Desktop.
How to install OpenCV on Raspberry Pi

Installing optimized OpenCV 3.3 on Raspbian

Prerequisites

  • Keep your system up to date:
    • $ sudo apt-get update
    • $ sudo apt-get upgrade
    • $ sudo reboot
  • Make sure you've got an internet connection.
  • Make sure you've got
    • wget
    • unzip

Installation

Run the script InstallOpenCV.sh

#!/usr/bin/env bash
OPENCV_VERSION="3.3.0"
PYTHON="python3"
OPENCV_URL="https://github.com/Itseez/opencv/archive/${OPENCV_VERSION}.zip"
OPENCV_PACKAGE_NAME="opencv-${OPENCV_VERSION}"
OPENCV_CONTRIB_URL="https://github.com/Itseez/opencv_contrib/archive/${OPENCV_VERSION}.zip"
OPENCV_CONTRIB_PACKAGE_NAME="opencv_contrib-${OPENCV_VERSION}"
PREFIX="${PREFIX:-/usr/local}"
MAKEFLAGS="${MAKEFLAGS:--j 4}"
install_build_dependencies() {
local build_packages="build-essential git cmake pkg-config"
local image_io_packages="libjpeg-dev libtiff5-dev libjasper-dev \
libpng12-dev zlib1g-dev libwebp-dev libpng-dev \
libopenexr-dev libgdal-dev"
local video_io_packages="libavcodec-dev libavformat-dev \
libswscale-dev libv4l-dev \
libxvidcore-dev libx264-dev \
libdc1394-22-dev libtheora-dev \
libvorbis-dev yasm libopencore-amrnb-dev \
libopencore-amrwb-dev"
local gtk_packages="libgtk2.0-dev"
local matrix_packages="libatlas-base-dev gfortran"
local python_dev_packages="$PYTHON-dev $PYTHON-pip"
sudo apt-get install -y $build_packages $image_io_packages $gtk_packages $video_io_packages $matrix_packages $python_dev_packages
sudo apt-get install -y libtbb-dev libeigen3-dev
sudo apt-get install -y $PYTHON-dev $PYTHON-tk $PYTHON-numpy
# GUI (if you want to use GTK instead of Qt, replace 'qt5-default' with 'libgtkglext1-dev' and remove '-DWITH_QT=ON' in CMake)
sudo apt-get install -y libgtkglext1-dev libvtk6-dev
}
install_global_python_dependencies() {
sudo pip install virtualenv virtualenvwrapper
}
install_local_python_dependences() {
pip install numpy
}
download_packages() {
wget -c -O "$HOME/${OPENCV_PACKAGE_NAME}.zip" "$OPENCV_URL"
wget -c -O "$HOME/${OPENCV_CONTRIB_PACKAGE_NAME}.zip" "$OPENCV_CONTRIB_URL"
}
unpack_packages() {
# unzip args:
# -q = quiet
# -n = never overwrite existing files
unzip -q -n "$HOME/${OPENCV_PACKAGE_NAME}.zip" -d "$HOME"
unzip -q -n "$HOME/${OPENCV_CONTRIB_PACKAGE_NAME}.zip" -d "$HOME"
}
setup_virtualenv() {
export WORKON_HOME="$HOME/.virtualenvs"
source /usr/local/bin/virtualenvwrapper.sh
mkvirtualenv -p $PYTHON cv
workon cv
install_local_python_dependences
}
build() {
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX="$PREFIX" \
-D OPENCV_EXTRA_MODULES_PATH="$HOME/$OPENCV_CONTRIB_PACKAGE_NAME/modules" \
-D ENABLE_NEON=ON \
-D ENABLE_VFPV3=ON \
-D BUILD_TESTS=OFF \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D BUILD_EXAMPLES=OFF \
-D WITH_QT=OFF \
-D WITH_GTK=ON \
-D WITH_OPENGL=ON \
-D WITH_V4L=ON \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
-D ENABLE_PRECOMPILED_HEADERS=OFF \
-D WITH_TBB=OFF ..
make ${MAKEFLAGS}
}
install() {
sudo make install
sudo ldconfig
}
log() {
local msg="$1"; shift
local _color_bold_yellow='\e[1;33m'
local _color_reset='\e[0m'
echo -e "\[${_color_bold_yellow}\]${msg}\[${_color_reset}\]"
}
main() {
log "Installing build dependencies..."
install_build_dependencies
log "Downloading OpenCV packages..."
download_packages
log "Unpacking OpenCV packages..."
unpack_packages
log "Installing global python deps..."
install_global_python_dependencies
log "Setting up local python environment..."
setup_virtualenv
log "Building OpenCV..."
cd "$HOME/$OPENCV_PACKAGE_NAME"
mkdir build
cd build
build
echo "Installing OpenCV..."
install
}
main
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment