티스토리 뷰
728x90
출처
- Install OpenCV 4 on your Raspberry Pi - PyImageSearch
- [OpenCV 설치] Ubuntu OpenCV 설치, C++ 테스트
- How to find OpenCV version in Python and C++ ? | Learn OpenCV
- 4.0.0 does not produce pkgconfig file · Issue #13154 · opencv/opencv · GitHub
불필요한 패키지 제거
$ sudo apt-get purge wolfram-engine $ sudo apt-get purge libreoffice* $ sudo apt-get clean $ sudo apt-get autoremove
라즈비안(Raspberry pi OS)의 업데이트와 업그레이드
$ sudo apt-get update && sudo apt-get upgrade
OpenCV 4.1 관련 패키지 설치
OpenCV 빌드 관련 도구 설치
$ sudo apt-get install build-essential cmake unzip pkg-config
OpenCV 관련 라이브러리 설치
$ sudo apt-get install libjpeg-dev libpng-dev libtiff-dev $ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev $ sudo apt-get install libxvidcore-dev libx264-dev
GTK 관련 라이브러리 설치
$ sudo apt-get install libgtk-3-dev
OpenCV 수치 최적화가 된 패키지 설치
$ sudo apt-get install libatlas-base-dev gfortran
Python3 설치
$ sudo apt-get install python3-dev
OpenCV 4.1 다운로드
OpenCV 4.1.0 소스 다운로드
$ cd ~ $ wget -O opencv.zip https://github.com/opencv/opencv/archive/4.1.0.zip $ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.1.0.zip
압축풀기
$ unzip opencv.zip $ unzip opencv_contrib.zip
디렉토리명 변경
$ mv opencv-4.1.0 opencv $ mv opencv_contrib-4.1.0 opencv_contrib
OpenCV 4.1 용 Python 3 가상 환경 구성
pip 설치
$ wget https://bootstrap.pypa.io/get-pip.py $ sudo python3 get-pip.py Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple Collecting pip Downloading https://files.pythonhosted.org/packages/5c/e0/be401c003291b56efc55aeba6a80ab790d3d4cece2778288d65323009420/pip-19.1.1-py2.py3-none-any.whl (1.4MB) |████████████████████████████████| 1.4MB 1.1MB/s Installing collected packages: pip Found existing installation: pip 18.1 Uninstalling pip-18.1: Successfully uninstalled pip-18.1 Successfully installed pip-19.1.1
virtualenv, virtualenvwrapper 설치
$ sudo pip install virtualenv virtualenvwrapper $ sudo rm -rf ~/get-pip.py ~/.cache/pip
python3, virtualenv 환경설정
$ echo -e "\n# virtualenv and virtualenvwrapper" >> ~/.profile $ echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.profile $ echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3" >> ~/.profile $ echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.profile $ source ~/.profile
가상환경을 만들고, OpenCV 4.1 관련 패키지 추가
$ mkvirtualenv cv -p python3 Already using interpreter /usr/bin/python3 Using base prefix '/usr' New python executable in /home/pi/.virtualenvs/cv/bin/python3 Also creating executable in /home/pi/.virtualenvs/cv/bin/python Installing setuptools, pip, wheel... done. virtualenvwrapper.user_scripts creating /home/pi/.virtualenvs/cv/bin/predeactivate virtualenvwrapper.user_scripts creating /home/pi/.virtualenvs/cv/bin/postdeactivate virtualenvwrapper.user_scripts creating /home/pi/.virtualenvs/cv/bin/preactivate virtualenvwrapper.user_scripts creating /home/pi/.virtualenvs/cv/bin/postactivate virtualenvwrapper.user_scripts creating /home/pi/.virtualenvs/cv/bin/get_env_details
workon 명령을 사용하여 cv 환경에 있는지 확인
pi@raspberrypi:~$ workon cv
(cv) pi@raspberrypi:~$
numpy 파이썬 패키지 설치(OpenCV관련 수학 함수 모음)
pi@raspberrypi:~$ workon cv (cv) pi@raspberrypi:~$ pip install numpy Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple Collecting numpy Using cached https://www.piwheels.org/simple/numpy/numpy-1.16.4-cp37-cp37m-linux_armv7l.whl Installing collected packages: numpy Successfully installed numpy-1.16.4 (cv) pi@raspberrypi:~$ python Python 3.7.3 (default, Apr 3 2019, 05:39:12) [GCC 8.2.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import numpy >>> quit()
OpenCV 컴파일
CMake 실행
$ cd ~/opencv $ mkdir build $ cd build $ 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 BUILD_TESTS=OFF \ -D OPENCV_ENABLE_NONFREE=ON \ -D INSTALL_PYTHON_EXAMPLES=OFF \ -D OPENCV_GENERATE_PKGCONFIG=YES \ -D BUILD_EXAMPLES=OFF .. ... 생략 ... -- General configuration for OpenCV 4.1.0 ===================================== -- Version control: unknown -- -- Extra modules: -- Location (extra): /home/pi/opencv_contrib/modules -- Version control (extra): unknown -- -- Platform: -- Timestamp: 2019-07-01T15:38:09Z -- Host: Linux 4.19.50-v7+ armv7l -- CMake: 3.13.4 -- CMake generator: Unix Makefiles -- CMake build tool: /usr/bin/make -- Configuration: RELEASE -- -- CPU/HW features: -- Baseline: VFPV3 NEON -- requested: DETECT -- required: VFPV3 NEON -- -- C/C++: -- Built as dynamic libs?: YES -- C++ Compiler: /usr/bin/c++ (ver 8.3.0) -- C++ flags (Release): -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winit-self -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -mfpu=neon -mfp16-format=ieee -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG -DNDEBUG -- C++ flags (Debug): -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winit-self -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -mfpu=neon -mfp16-format=ieee -fvisibility=hidden -fvisibility-inlines-hidden -g -O0 -DDEBUG -D_DEBUG -- C Compiler: /usr/bin/cc -- C flags (Release): -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Winit-self -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -mfpu=neon -mfp16-format=ieee -fvisibility=hidden -O3 -DNDEBUG -DNDEBUG -- C flags (Debug): -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Winit-self -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -mfpu=neon -mfp16-format=ieee -fvisibility=hidden -g -O0 -DDEBUG -D_DEBUG -- Linker flags (Release): -Wl,--gc-sections -- Linker flags (Debug): -Wl,--gc-sections -- ccache: NO -- Precompiled headers: YES -- Extra dependencies: dl m pthread rt -- 3rdparty dependencies: -- -- OpenCV modules: -- To be built: aruco bgsegm bioinspired calib3d ccalib core datasets dnn dnn_objdetect dpm face features2d flann freetype fuzzy gapi hfs highgui img_hash imgcodecs imgproc line_descriptor ml objdetect optflow phase_unwrapping photo plot python3 quality reg rgbd saliency shape stereo stitching structured_light superres surface_matching text tracking ts video videoio videostab xfeatures2d ximgproc xobjdetect xphoto -- Disabled: world -- Disabled by dependency: - -- Unavailable: cnn_3dobj cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev cvv hdf java js matlab ovis python2 sfm viz -- Applications: perf_tests apps -- Documentation: NO -- Non-free algorithms: YES -- -- GUI: -- GTK+: YES (ver 3.24.5) -- GThread : YES (ver 2.58.3) -- GtkGlExt: NO -- VTK support: NO -- -- Media I/O: -- ZLib: /usr/lib/arm-linux-gnueabihf/libz.so (ver 1.2.11) -- JPEG: /usr/lib/arm-linux-gnueabihf/libjpeg.so (ver 62) -- WEBP: build (ver encoder: 0x020e) -- PNG: /usr/lib/arm-linux-gnueabihf/libpng.so (ver 1.6.36) -- TIFF: /usr/lib/arm-linux-gnueabihf/libtiff.so (ver 42 / 4.0.10) -- JPEG 2000: build (ver 1.900.1) -- OpenEXR: build (ver 1.7.1) -- HDR: YES -- SUNRASTER: YES -- PXM: YES -- PFM: YES -- -- Video I/O: -- DC1394: NO -- FFMPEG: YES -- avcodec: YES (58.35.100) -- avformat: YES (58.20.100) -- avutil: YES (56.22.100) -- swscale: YES (5.3.100) -- avresample: NO -- GStreamer: NO -- v4l/v4l2: YES (linux/videodev2.h) -- -- Parallel framework: pthreads -- -- Trace: YES (built-in) -- -- Other third-party libraries: -- Lapack: NO -- Eigen: NO -- Custom HAL: YES (carotene (ver 0.0.1)) -- Protobuf: build (3.5.1) -- -- OpenCL: YES (no extra features) -- Include path: /home/pi/opencv/3rdparty/include/opencl/1.2 -- Link libraries: Dynamic load -- -- Python 3: -- Interpreter: /home/pi/.virtualenvs/cv/bin/python3 (ver 3.7.3) -- Libraries: /usr/lib/arm-linux-gnueabihf/libpython3.7m.so (ver 3.7.3) -- numpy: /home/pi/.virtualenvs/cv/lib/python3.7/site-packages/numpy/core/include (ver 1.16.4) -- install path: lib/python3.7/site-packages/cv2/python-3.7 -- -- Python (for build): /home/pi/.virtualenvs/cv/bin/python3 -- -- Java: -- ant: NO -- JNI: NO -- Java wrappers: NO -- Java tests: NO -- -- Install to: /usr/local -- ----------------------------------------------------------------- -- -- Configuring done -- Generating done -- Build files have been written to: /home/pi/opencv/build
SWAP 사이즈 늘리기
dphys-swapfile 편집
$ sudo vi /etc/dphys-swapfile
CONF_SWAPSIZE 값을 2024 (2GB)로 설정
# set size to absolute value, leaving empty (default) then uses computed value
# you most likely don't want this, unless you have an special disk situation
# CONF_SWAPSIZE=100
CONF_SWAPSIZE=2048
dphys-swapfile 재실행
$ sudo /etc/init.d/dphys-swapfile stop Stopping dphys-swapfile (via systemctl): dphys-swapfile.service. $ sudo /etc/init.d/dphys-swapfile start Starting dphys-swapfile (via systemctl): dphys-swapfile.service
OpenCV 컴파일
$ make -j4
OpenCV 설치
$ sudo make install $ sudo ldconfig
SWAP 이전 사이즈 돌려놓기
1. CONF_SWAPSIZE를 100MB로 재설정
2. 스왑 서비스를 재시작
OpenCV 4를 Python 3 가상 환경에 복사(소프트링크)
$ cd ~/.virtualenvs/cv/lib/python3.7/site-packages/ $ ln -s /usr/local/lib/python3.7/site-packages/cv2/python-3.7/cv2.cpython-37m-arm-linux-gnueabihf.so cv2.so $ cd ~
OpenCV 설치 확인
파이썬
$ workon cv $ python Python 3.7.3 (default, Apr 3 2019, 05:39:12) [GCC 8.2.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import cv2 >>> cv2.__version__ '4.1.0' >>> exit()
C++
#include "opencv2/opencv.hpp" using namespace cv; using namespace std; int main( int argc, char** argv ) { cout << "OpenCV version : " << CV_VERSION << endl; cout << "Major version : " << CV_MAJOR_VERSION << endl; cout << "Minor version : " << CV_MINOR_VERSION << endl; cout << "Subminor version : " << CV_SUBMINOR_VERSION << endl; }
$ g++ opencv_check_version.cpp -o opencv_check_version `pkg-config --cflags --libs opencv4` $ ./opencv_check_version OpenCV version : 4.1.0 Major version : 4 Minor version : 1 Subminor version : 0
댓글
300x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 전예희
- Delphi
- flex
- koba2010
- 일본여행
- KOBA
- Spring MVC
- 서울오토살롱
- MySQL
- sas2009
- SAS
- Java
- Xcode
- 송주경
- ffmpeg
- Linux
- 지스타2007
- Mac
- oracle
- ble
- 튜닝쇼 2008
- 동경
- NDK
- 레이싱모델 익스트림 포토 페스티벌
- JavaScript
- ubuntu
- android
- Spring
- Delphi Tip
- BPI-M4
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함