... Note that the wheel (especially manylinux) format does not currently support properly ARM architecture so there are no packages for ARM based platforms in PyPI. However, opencv-python packages for Raspberry Pi can be found from www.piwheels.org .Ok ...
... Please note that the wheel format (especially manylinux) currently does not properly support the ARM architecture, so PyPI does not have packages for ARM-based platforms. However, opencv-python packages for the Raspberry Pi can be found at www.piwheels.org .
Wheels provided support all Raspberry Pi models (Pi 3, Pi 2, Pi 1 and Pi Zero). Wheels are provided for Raspbian Jessie (Python 3.4) and Raspbian Stretch (Python 3.5). We plan to add support for Raspbian Buster (Python 3.7) in due course.I was already ready for a sleepless night with compilation of OpenCV on a raspberry, but I remembered an article about cross-compiling a library (it was not for nothing that the teachers at the institute suggested we make a laboratory instead of manuals). Having slightly changed the parameters from the article (it was necessary to add import for python3 and check if all the libraries are for OpenCV 4.1.0), I could achieve the result I desired.
The provided wheels support all Raspberry Pi models (Pi 3, Pi 2, Pi 1 and Pi Zero. Wheel support Raspbian Jessie (Python 3.4) and Raspbian Stretch (Python 3.5). We plan to add support for Raspbian Buster (Python 3.7) in due time.
sudo apt update sudo apt upgrade
sudo dpkg --add-architecture armhf sudo apt update sudo apt install qemu-user-static
sudo apt-get install python3-dev sudo apt-get install python3-numpy sudo apt-get install python-dev sudo apt-get install python-numpy
sudo apt-get install libpython2-dev:armhf sudo apt-get install libpython3-dev:armhf
$ sudo apt install libgtk-3-dev:armhf libcanberra-gtk3-dev:armhf
sudo apt install libtiff-dev:armhf zlib1g-dev:armhf sudo apt install libjpeg-dev:armhf libpng-dev:armhf sudo apt install libavcodec-dev:armhf libavformat-dev:armhf libswscale-dev:armhf libv4l-dev:armhf sudo apt-get install libxvidcore-dev:armhf libx264-dev:armhf
sudo apt install crossbuild-essential-armhf sudo apt install gfortran-arm-linux-gnueabihf
sudo apt install cmake git pkg-config wget
cd ~ mkdir opencv_all && cd opencv_all wget -O opencv.tar.gz https://github.com/opencv/opencv/archive/4.1.0.tar.gz tar xf opencv.tar.gz wget -O opencv_contrib.tar.gz https://github.com/opencv/opencv_contrib/archive/4.1.0.tar.gz tar xf opencv_contrib.tar.gz rm *.tar.gz
export PKG_CONFIG_PATH=/usr/lib/arm-linux-gnueabihf/pkgconfig:/usr/share/pkgconfig export PKG_CONFIG_LIBDIR=/usr/lib/arm-linux-gnueabihf/pkgconfig:/usr/share/pkgconfig
cd opencv-4.1.0 mkdir build && cd build cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/opt/opencv-4.1.0 \ -D CMAKE_TOOLCHAIN_FILE=../platforms/linux/arm-gnueabi.toolchain.cmake \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_all/opencv_contrib-4.1.0/modules \ -D OPENCV_ENABLE_NONFREE=ON \ -D ENABLE_NEON=ON \ -D ENABLE_VFPV3=ON \ -D BUILD_TESTS=OFF \ -D BUILD_DOCS=OFF \ -D PYTHON2_INCLUDE_PATH=/usr/include/python2.7 \ -D PYTHON2_LIBRARIES=/usr/lib/arm-linux-gnueabihf/libpython2.7.so \ -D PYTHON2_NUMPY_INCLUDE_DIRS=/usr/lib/python2/dist-packages/numpy/core/include \ -D PYTHON3_INCLUDE_PATH=/usr/include/python3.7m \ -D PYTHON3_LIBRARIES=/usr/lib/arm-linux-gnueabihf/libpython3.7m.so \ -D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/dist-packages/numpy/core/include \ -D BUILD_OPENCV_PYTHON2=ON \ -D BUILD_OPENCV_PYTHON3=ON \ -D BUILD_EXAMPLES=OFF ..
make -j16
sudo make install/strip
cd /opt/opencv-4.1.0/lib/python3.7/dist-packages/cv2/python-3.7/ sudo cp cv2.cpython-37m-x86_64-linux-gnu.so cv2.so
cd /opt tar -cjvf ~/opencv-4.1.0-armhf.tar.bz2 opencv-4.1.0 cd ~
git clone https://gist.github.com/sol-prog/ed383474872958081985de733eaf352d opencv_cpp_compile_settings cd opencv_cpp_compile_settings cp opencv.pc ~ cd ~
libdir = /opt/opencv-4.1.0/lib includedir = /opt/opencv-4.1.0/include/opencv4 Name: OpenCV Description: OpenCV (Open Source Computer Vision Library) is an open source computer vision and machine learning software library. Version: 4.1.0 Libs: -L${libdir} -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_calib3d -lopencv_ccalib -lopencv_core -lopencv_datasets -lopencv_dnn_objdetect -lopencv_dnn -lopencv_dpm -lopencv_face -lopencv_features2d -lopencv_flann -lopencv_freetype -lopencv_fuzzy -lopencv_gapi -lopencv_hfs -lopencv_highgui -lopencv_imgcodecs -lopencv_img_hash -lopencv_imgproc -lopencv_line_descriptor -lopencv_ml -lopencv_objdetect -lopencv_optflow -lopencv_phase_unwrapping -lopencv_photo -lopencv_plot -lopencv_quality -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_shape -lopencv_stereo -lopencv_stitching -lopencv_structured_light -lopencv_superres -lopencv_surface_matching -lopencv_text -lopencv_tracking -lopencv_videoio -lopencv_video -lopencv_videostab -lopencv_xfeatures2d -lopencv_ximgproc -lopencv_xobjdetect -lopencv_xphoto Cflags: -I${includedir}
-lopencv_bgsegm -lopencv_bioinspired -lopencv_calib3d -lopencv_ccalib -lopencv_core -lopencv_datasets -lopencv_dnn_objdetect -lopencv_dnn -lopencv_dpm -lopencv_face -lopencv_features2d -lopencv_flann -lopencv_freetype -lopencv_fuzzy -lopencv_gapi -lopencv_hfs -lopencv_highgui -lopencv_imgcodecs -lopencv_img_hash -lopencv_imgproclibdir = /opt/opencv-4.1.0/lib includedir = /opt/opencv-4.1.0/include/opencv4 Name: OpenCV Description: OpenCV (Open Source Computer Vision Library) is an open source computer vision and machine learning software library. Version: 4.1.0 Libs: -L${libdir} -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_calib3d -lopencv_ccalib -lopencv_core -lopencv_datasets -lopencv_dnn_objdetect -lopencv_dnn -lopencv_dpm -lopencv_face -lopencv_features2d -lopencv_flann -lopencv_freetype -lopencv_fuzzy -lopencv_gapi -lopencv_hfs -lopencv_highgui -lopencv_imgcodecs -lopencv_img_hash -lopencv_imgproc -lopencv_line_descriptor -lopencv_ml -lopencv_objdetect -lopencv_optflow -lopencv_phase_unwrapping -lopencv_photo -lopencv_plot -lopencv_quality -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_shape -lopencv_stereo -lopencv_stitching -lopencv_structured_light -lopencv_superres -lopencv_surface_matching -lopencv_text -lopencv_tracking -lopencv_videoio -lopencv_video -lopencv_videostab -lopencv_xfeatures2d -lopencv_ximgproc -lopencv_xobjdetect -lopencv_xphoto Cflags: -I${includedir}
-lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_shape -lopencv_stereo -lopencv_stitching -lopencv_structured_light -lopencv_superres -lopencv_surface_matching -lopencv_text -lopencv_tracking -lopencv_videoio -lopencv_video -lopencv_videostab -lopencv_xfeatures2d -lopencv_ximgproc -lopencv_xobjdetectlibdir = /opt/opencv-4.1.0/lib includedir = /opt/opencv-4.1.0/include/opencv4 Name: OpenCV Description: OpenCV (Open Source Computer Vision Library) is an open source computer vision and machine learning software library. Version: 4.1.0 Libs: -L${libdir} -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_calib3d -lopencv_ccalib -lopencv_core -lopencv_datasets -lopencv_dnn_objdetect -lopencv_dnn -lopencv_dpm -lopencv_face -lopencv_features2d -lopencv_flann -lopencv_freetype -lopencv_fuzzy -lopencv_gapi -lopencv_hfs -lopencv_highgui -lopencv_imgcodecs -lopencv_img_hash -lopencv_imgproc -lopencv_line_descriptor -lopencv_ml -lopencv_objdetect -lopencv_optflow -lopencv_phase_unwrapping -lopencv_photo -lopencv_plot -lopencv_quality -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_shape -lopencv_stereo -lopencv_stitching -lopencv_structured_light -lopencv_superres -lopencv_surface_matching -lopencv_text -lopencv_tracking -lopencv_videoio -lopencv_video -lopencv_videostab -lopencv_xfeatures2d -lopencv_ximgproc -lopencv_xobjdetect -lopencv_xphoto Cflags: -I${includedir}
sudo apt install libgtk-3-dev libcanberra-gtk3-dev sudo apt install libtiff-dev zlib1g-dev sudo apt install libjpeg-dev libpng-dev sudo apt install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev sudo apt-get install libxvidcore-dev libx264-dev
tar xfv opencv-4.1.0-armhf.tar.bz2 sudo mv opencv-4.1.0 /opt
rm opencv-4.1.0-armhf.tar.bz2
sudo mv opencv.pc /usr/lib/arm-linux-gnueabihf/pkgconfig
echo 'export LD_LIBRARY_PATH=/opt/opencv-4.1.0/lib:$LD_LIBRARY_PATH' >> .bashrc source .bashrc
sudo ln -s /opt/opencv-4.1.0/lib/python2.7/dist-packages/cv2 /usr/lib/python2.7/dist-packages/cv2 sudo ln -s /opt/opencv-4.1.0/lib/python3.7/dist-packages/cv2 /usr/lib/python3/dist-packages/cv2
git clone https://github.com/sol-prog/raspberry-pi-opencv.git cd raspberry-pi-opencv/tests
g++ cli_cpp_test.cpp -o cli_cpp_test `pkg-config --cflags --libs opencv` ./cli_cpp_test
g++ gui_cpp_test.cpp -o gui_cpp_test `pkg-config --cflags --libs opencv` ./gui_cpp_test
python3 cli_python_test.py
python3 gui_python_test.py
mkdir opencv && cd opencv && mkdir armhf_opencv touch armhf_opencv/Dockerfile nano armhf_opencv/Dockerfile
docker image build armhf_opencv/
>>> Successfully built babdc99ba2d8
docker tag babdc99ba2d8 armhf_opencv:latest docker run armhf_opencv
docker container ls --all >>> CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES >>> 369dff5a0a9b armhf_opencv "bash" 9 seconds ago Exited (0) 7 seconds ago affectionate_wu
docker cp 369dff5a0a9b:/root/opencv-4.1.0-armhf.tar.bz2 ./ docker cp 369dff5a0a9b:/root/opencv.pc ./
FROM debian:buster USER root RUN apt update && apt upgrade RUN dpkg --add-architecture armhf && \ apt update && apt install -y qemu-user-static RUN apt install -y python3-dev python3-numpy python-dev python-numpy RUN apt install -y libpython2-dev:armhf libpython3-dev:armhf \ libgtk-3-dev:armhf libcanberra-gtk3-dev:armhf \ libtiff-dev:armhf zlib1g-dev:armhf \ libjpeg-dev:armhf libpng-dev:armhf \ libavcodec-dev:armhf libavformat-dev:armhf \ libswscale-dev:armhf libv4l-dev:armhf \ libxvidcore-dev:armhf libx264-dev:armhf RUN apt install -y crossbuild-essential-armhf gfortran-arm-linux-gnueabihf RUN apt install -y cmake git pkg-config wget RUN mkdir opencv_all && cd opencv_all && \ wget -O opencv.tar.gz https://github.com/opencv/opencv/archive/4.1.0.tar.gz && \ tar -xf opencv.tar.gz -C /tmp && \ wget -O opencv_contrib.tar.gz https://github.com/opencv/opencv_contrib/archive/4.1.0.tar.gz && \ tar -xf opencv_contrib.tar.gz -C /tmp && \ rm *.tar.gz && \ export PKG_CONFIG_PATH=/usr/lib/arm-linux-gnueabihf/pkgconfig:/usr/share/pkgconfig && \ export PKG_CONFIG_LIBDIR=/usr/lib/arm-linux-gnueabihf/pkgconfig:/usr/share/pkgconfig && \ cd /tmp/opencv-4.1.0 && mkdir build && cd build && \ cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/opt/opencv-4.1.0 \ -D CMAKE_TOOLCHAIN_FILE=../platforms/linux/arm-gnueabi.toolchain.cmake \ -D OPENCV_EXTRA_MODULES_PATH=/tmp/opencv_contrib-4.1.0/modules \ -D OPENCV_ENABLE_NONFREE=ON \ -D ENABLE_NEON=ON \ -D ENABLE_VFPV3=ON \ -D BUILD_TESTS=OFF \ -D BUILD_DOCS=OFF \ -D PYTHON2_INCLUDE_PATH=/usr/include/python2.7 \ -D PYTHON2_LIBRARIES=/usr/lib/arm-linux-gnueabihf/libpython2.7.so \ -D PYTHON2_NUMPY_INCLUDE_DIRS=/usr/lib/python2/dist-packages/numpy/core/include \ -D PYTHON3_INCLUDE_PATH=/usr/include/python3.7m \ -D PYTHON3_LIBRARIES=/usr/lib/arm-linux-gnueabihf/libpython3.7m.so \ -D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/dist-packages/numpy/core/include \ -D BUILD_OPENCV_PYTHON2=ON \ -D BUILD_OPENCV_PYTHON3=ON \ -D BUILD_EXAMPLES=OFF .. && \ make -j6 && make install/strip RUN cd /opt/opencv-4.1.0/lib/python3.7/dist-packages/cv2/python-3.7/ && \ cp cv2.cpython-37m-x86_64-linux-gnu.so cv2.so RUN cd /opt && tar -cjvf /root/opencv-4.1.0-armhf.tar.bz2 opencv-4.1.0 RUN git clone https://gist.github.com/sol-prog/ed383474872958081985de733eaf352d opencv_cpp_compile_settings && \ cd opencv_cpp_compile_settings && \ cp opencv.pc /root/
Source: https://habr.com/ru/post/461693/
All Articles