박민혀기

RaspiberryPi(CM4)에 OpenCV 4.5.1 Install [C++ 환경] 본문

Raspiberry Pi

RaspiberryPi(CM4)에 OpenCV 4.5.1 Install [C++ 환경]

박민혀기 2022. 9. 5. 20:08

2022.09.05 최초작성

1. 기존에 설치 된 OpenCV 제거

pkg-config --modversion opencv

 

1-2. 아래 메시지가 나오면 2단계 진행

Package opencv was not found in the pkg-config search path.

Perhaps you should add the directory containing `opencv.pc'

to the PKG_CONFIG_PATH environment variable

No package 'opencv' found

 

1-3.아래 메시지가 나오면 1-4단계 진행

2.4.9.1                <--- OpenCV 버전

 

1-4. OpenCV(라이브러리, 패키지) Uninstall

sudo apt-get purge  libopencv* python-opencv

sudo apt-get autoremove

 

1-5. OpenCV Uninstall

sudo find /usr/local/ -name "*opencv*" -exec rm  {} \;

2.기본적인 업데이트 후 재부팅! (필수)

sudo apt update 
sudo apt upgrade (upgrade는 안하는걸 추천)
sudo reboot

3. OpenCV에 필요한 패키지, 라이브러리, 컴파일러 설치

apt install build-essential cmake

apt install libjpeg-dev libtiff5-dev libjasper-dev libpng-dev
apt install libavcodec-dev libavformat-dev libswscale-dev libxvidcore-dev libx264-dev libxine2-dev
apt install libv4l-dev v4l-utils
apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly
apt install libgtk2.0-dev
apt install mesa-utils libgl1-mesa-dri libgtkgl2.0-dev libgtkglext1-dev
apt install libatlas-base-dev gfortran libeigen3-dev
apt install python3-dev python3-numpy     (에러 발생시 sudo apt-get dist-upgrade 실행 후 다시 입력)

 

&&명령 이용하여 한 번에 실행 Test (복붙)

apt install build-essential cmake -y && apt install libjpeg-dev libtiff5-dev libpng-dev -y && apt install libavcodec-dev libavformat-dev libswscale-dev libxvidcore-dev libx264-dev libxine2-dev -y && apt install libv4l-dev v4l-utils -y && apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly -y && apt install libgtk2.0-dev -y && apt install mesa-utils libgl1-mesa-dri libgtkgl2.0-dev libgtkglext1-dev -y && apt install libatlas-base-dev gfortran libeigen3-dev -y && apt install python3-dev python3-numpy -y

 

4.OpenCV 소스코드, OpenCV Extra Modules 설치

4-1. OpenCV 폴더 생성, 열기

mkdir opencv
cd opencv

 

4-2. OpenCV, OpenCV Extra Modules 소스코드 다운로드 및 압축해제

wget -O opencv.zip https://github.com/opencv/opencv/archive/4.5.1.zip
unzip opencv.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.5.1.zip
unzip opencv_contrib.zip

 

&&명령 이용하여 한 번에 실행 Test (복붙)

wget -O opencv.zip https://github.com/opencv/opencv/archive/4.5.1.zip && unzip opencv.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.5.1.zip && unzip opencv_contrib.zip

 

 

4-3. 빌드 할 디렉터리 생성

cd opencv-4.5.1
mkdir build
cd build

4-4. cmake를 사용하여 OpenCV 컴파일 설정

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=OFF -D WITH_IPP=OFF -D WITH_1394=OFF -D BUILD_WITH_DEBUG_INFO=OFF -D BUILD_DOCS=OFF -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=OFF -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D ENABLE_NEON=ON -D ENABLE_VFPV3=ON -D WITH_QT=OFF -D WITH_GTK=ON -D WITH_OPENGL=ON -D OPENCV_ENABLE_NONFREE=ON -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.5.1/modules -D WITH_V4L=ON -D WITH_FFMPEG=ON -D WITH_XINE=ON -D ENABLE_PRECOMPILED_HEADERS=OFF -D BUILD_NEW_PYTHON_SUPPORT=ON -D OPENCV_GENERATE_PKGCONFIG=ON ../

(복붙..!, 만약 에러시 설치한 OpenCV 버전과 cmake 명령어에 있는 버전 일치 확인)

 

4-5. 스압영역 지정

nano /etc/dphys-swapfile

CONF_SWAPSIZE=100 이부분을

CONF_SWAPSIZE=2048 로 수정

 

free
sudo /etc/init.d/dphys-swapfile restart
free

 

2097148 정도로 스압영역이 늘어난걸 확인!

 

4-6. 컴파일!!!

time make -j4    (-j4 => 4코어 cpu)

*혹, python 라이브러리 빌드하는 부분에서 다음처럼 오랫동안 멈춤 현상이 있는 경우 . Ctrl + C를 눌러 중지하고 make 명령어만 실행

 

4-7. 이제 컴파일 결과물을 설치합니다.
sudo make install

4-8. opencv  라이브러리를 찾을 수 있도록 다음 명령을 실행합니다.
sudo ldconfig
nano /etc/dphys-swapfile
CONF_SWAPSIZE=100
sudo /etc/init.d/dphys-swapfile restart
free

 

OpenCV 설치가 끝났고 컴파이 테스트 확인
g++ -o facedetect /usr/local/share/opencv4/samples/cpp/facedetect.cpp $(pkg-config opencv4 --libs --cflags)
아무 에러가 없이 실행 파일(facedetect)이 생성되면 정상적으로 설치 된 것

 

참고 https://webnautes.tistory.com/916