OpenCV/OpenCV_Common

OpenCV 개요 및 설치

Player_blue 2023. 11. 9. 03:29

OpenCV는 오픈소스로 다양한 언어에서 사용하고 있다.

대표적으로 C/C++, Python, Java등이 있으며 다양한 OS에서도 지원을 하고 있다.

OpenCV는 module이라고 부르는 다수의 라이브러리의 집합이다.

OpenCV모듈은 메인 모듈과 추가 모듈로 나눌 수 있다.

 

OpenCV 관련 사이트

- OpenCV Homepage

 

Home

OpenCV provides a real-time optimized Computer Vision library, tools, and hardware. It also supports model execution for Machine Learning (ML) and Artificial Intelligence (AI).

opencv.org

 

- OpenCV Github

OpenCV의 메인 모듈.

핵심 기능, 널리 사용되는 기능, 기반 기능(infrastructure)등이 포함되어 있다.

 

GitHub - opencv/opencv: Open Source Computer Vision Library

Open Source Computer Vision Library. Contribute to opencv/opencv development by creating an account on GitHub.

github.com

 

- OpenCV_contrib Github

OpenCV의 추가 모듈

최신 기능, 널리 사용되지 않는 기능, 특허, HW 의존적 기능(CUDA)등이 포함되어있다.

 

 

GitHub - opencv/opencv_contrib: Repository for OpenCV's extra modules

Repository for OpenCV's extra modules. Contribute to opencv/opencv_contrib development by creating an account on GitHub.

github.com

 

- OpenCV Documentation

 

OpenCV: OpenCV modules

OpenCV  4.5.5 Open Source Computer Vision

docs.opencv.org


OpenCV 설치

이번에는 OpenCV를 설치하여 OpenCV의 헤더파일, LIB 파일, DLL파일을 컴퓨터에 생성할 것이다.

 

- Windows

Windows에는 두 가지 설치 방법을 지원한다.

  설치 실행 파일 이용 소스 코드 직접 빌드
장점 - 설치가 빠르고 간단하다.
- 미리 빌드된 DLL, LIB 파일을 제공한다.
- 자신의 시스템 환경에 최적화된, DLL, LIB 파일을 생성한다.
- 원하거나 원치 않는 옵션 선택이 가능하다.
  (extra modules, parallel_for backend, etc)
단점 - OpenCV 추가 모듈 미지원
- Windows 64비트 운영체제만 지원
- 빌드 작업이 복잡하고 시간이 오래 걸린다.

이번에는 설치 실행파일을 이용하여 OpenCV를 설치하고자 한다.

윈도우에는 4.5.5 version을 설치하여 사용할 것이다.

다음의 사이트중 한 사이트에서 " opencv-4.5.5-vc14_vc15.exe" 실행파일을 다운받으면 된다.

https://opencv.org/releases/

 

Releases

Become a Member Stay up to date on OpenCV and Computer Vision news Join our Newsletter  

opencv.org

https://github.com/opencv/opencv/releases

 

Releases · opencv/opencv

Open Source Computer Vision Library. Contribute to opencv/opencv development by creating an account on GitHub.

github.com

 

1. opencv-4.5.5-vc14_vc15.exe 실행

실행파일을 실행하여 C:\의 경로에 압축을 해제한다.

C드라이브에 opencv폴더가 생성됨을 확인하고 환경 변수를 설정한다.

 

2. 환경 변수 등록

  • [설정] → [시스템] → [정보] → [고급 시스템 설정] → [환경변수] 로 이동.
  • <user-id>에 대한 사용자 변수 새로만들기 선택
  • 변수 이름: OPENCV_DIR, 변수 값: C:\opencv\build

  • Path 지정

1. Path의 편집 클릭

 

2. 새로 만들기를 누르고 다음 경로 입력: "%OPENCV_DIR%\x64\vc15\bin"

 

3. version_check

cmd에 opencv_version을 치면 다음과 같이 버전을 볼 수 있다.

 

OpenCV 프로그램 개발 환경 설정

이번에는 Windows에 있는 IDE에 개발 환경을 설정해보자.

 

- Visual studio 2022

1. Visual studio 2022를 실행. [새프로젝트]  [빈 프로젝트] [프로젝트 이름] 설정

( 솔루션 및 프로젝트를 같은 디렉토리에 배치 &nbsp;선택)

 

2. (활성) 솔루션 플랫폼이 x64로 설정이 되어 있는지 확인 이후 소스 파일 폴더에 main.cpp파일 추가.

 

 

3. OpenCV 헤더 파일 위치를 지정

  • Visual Studio 메뉴에서 [프로젝트] [HelloCV 속성] 선택
  • [구성 속성] [C/C++]  → [일반] 선택
  • 추가 포함 디렉터리 항목에 "$(OPENCV_DIR)\include" 입력

 

4. OpenCV LIB 파일 위치 지정

  • Visual Studio 메뉴에서 [프로젝트]  [HelloCV 속성] 선택
  • [구성 속성]  [링커]  → [일반] 선택
  • 추가 라이브러리 디렉터리 항목에 "$(OPENCV_DIR)\x64\vc15\lib" 입력

 

5. OpenCV LIB 파일 이름 지정

  • Visual Studio 메뉴에서 [프로젝트]  [HelloCV 속성] 선택
  • [구성 속성]  [링커]  → [입력] 선택
  • 추가 종속성 항목에 opencv_world455d.lib 추가 (Release 모드는 opencv_world455.lib 추가)
  • opencv_world455d.lib의 d는 Debug mode라는 뜻이다.

Release mode로 변경 후 3 ~ 5번까지의 설정을 수행.

 

6. 적용확인

main.cpp에 코드를 적용하여 출력을 확인한다.

#include <iostream>
#include "opencv2/opencv.hpp"

int main(){
	std::cout << "Hello OpenCV " << CV_VERSION << std::endl;
	return 0;
}

 

결과

정리

  Debug 모드 Release 모드
추가 포함 디렉터리 $(OPENCV_DIR)\include
추가 라이브러리 디렉터리 $(OPENCV_DIR)\x64\vc15\lib
추가 종속성 opencv_world455d.lib opencv_world455.lib

 


- Linux

os: ubuntu 18.04

OpenCV 4.5.5를 바로 설치하면 좋겠지만, 현재 OpenCV 3.2.0이 설치가 되어있다.

$ pkg-config --modversion opencv

이번에는 OpenCV 3.2.0을 리눅스에서 지우고 4.5.5를 설치하고자 한다.

 

1. OpenCV 3.2.0 삭제

우선 기존의 OpenCV를 지우기 위해서 다음의 명령어로 지울 것이다.

$ sudo apt purge libopencv* python-opencv
$ sudo find /usr/local/ -name "*opencv*" -exec rm -i {} \;
$ sudo apt autoremove -y

이후 기존 패키지 업데이트 진행

$ sudo apt update -y && sudo apt upgrade -y

제대로 제거가 되었다면 다음과 같이 OpenCV version을 확인할 수 없다.

 

만약, 기존의 종속 패키지가 없다면 아래의 패키지들을 install 하자.

$ sudo apt install -y build-essential cmake pkg-config git unzip
$ sudo apt install -y libjpeg-dev libtiff5-dev libpng-dev libtiff-dev
$ sudo apt install -y libavcodec-dev libavformat-dev libswscale-dev libwscale-dev libxvidcore-dev libx264-dev libxine2-dev
$ sudo apt install -y libv4l-dev v4l-utils
$ sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev 
$ sudo apt install -y libgtk2.0-dev libgtk-3-dev
$ sudo apt install -y mesa-utils libgl1-mesa-dri libgtkgl2.0-dev libgtkglext1-dev
$ sudo apt install -y libatlas-base-dev gfortran libeigen3-dev
$ sudo apt install -y python2.7-dev python3-dev python-numpy python3-numpy

 

https://github.com/opencv/opencv/releases

 

Releases · opencv/opencv

Open Source Computer Vision Library. Contribute to opencv/opencv development by creating an account on GitHub.

github.com

이제 OpenCV를 빌드하기 위해 home폴더에 opencv dir을 만들고 Github에서 해당 버전의 zip 파일을 받아올 것이다.

 

$ mkdir opencv_build && cd opencv_build
$ wget -O opencv.zip https://github.com/opencv/opencv/archive/4.5.5.zip
$ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.5.5.zip
$ unzip opencv.zip
$ unzip opencv_contrib.zip

opencv main module과 opencv contrib module을 압축해제 한다.

이제 opencv폴더 내부로 들어가서 build dir을 생성한다.

$ cd opencv-4.5.5
$ mkdir build && cd build

cmake를 하기 위해 다음의 내용을 terminal에 입력하면 된다.

그러나 경로를 확인하고 입력해야 제대로 cmake가 진행된다.

python의 경우 import sys를 사용하여 각각의 경로를 알 수 있다.

import sys
import sysconfig

print(sys.prefix) # -D CMAKE_INSTALL_PREFIX=(경로 입력)
print(sys.executable) # -D PYTHON_EXECUTABLE=(경로 입력)
print(sysconfig.get_config_var('LIBDEST')) #-D PYTHON3_PACKAGES_PATH=(경로 입력)

 

cmake 진행. 전부 할 필요는 없이 필요한 부분만 진행하면 된다.

주의사항(CUDA && CUDNN) 사용시

  • CUDA_TOOLKIT_ROOT_DIR : 본인의 CUDA 버전과 일치하는지 확인하자.
  • OPENCV_EXTRA_MODULES_PATH : 위에서 생성한 opencv 폴더 내 contrib 폴더 경로와
    일치하는지 확인하자.
  • CUDA_ARCH_BIN CUDA_ARCH_PTX : 본인의 GPU 모델 사양에 맞추자. (아래의 링크에서 검색 가능)
  • CUDNN* : 본인이 설치한 cuDNN 버전을 확인한 후 맞춰서 변경해주자.
 

CUDA GPUs - Compute Capability

Explore your GPU compute capability and CUDA-enabled products.

developer.nvidia.com

빌드가 되지 않는다면, 경로를 꼭꼭!! 확인하자!!! 진짜 중요함!!

cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D OPENCV_ENABLE_NONFREE=OFF \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_build/opencv_contrib-4.5.5/modules \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D BUILD_EXAMPLES=ON \
-D BUILD_DOCS=OFF \
-D BUILD_SHARED_LIBS=ON \
-D BUILD_opencv_python2=OFF \
-D BUILD_opencv_python3=OFF \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
-D WITH_CUDA=ON \
-D WITH_CUBLAS=ON \
-D WITH_CUDNN=ON \
-D CUDA_FAST_MATH=1 \
-D OPENCV_DNN_CUDA=ON \
-D CUDA_ARCH_BIN=5.2 \
-D CUDA_ARCH_PTX=5.2 \
-D WITH_VTK=ON \
-D WITH_OPENCL=ON \
-D OPENCV_SKIP_PYTHON_LOADER=ON \
-D PYTHON_EXECUTABLE=~/anaconda3/envs/yolov4/bin/python3.7 \
-D PYTHON3_INCLUDE_DIR=~/anaconda3/envs/yolov4/include/python3.7m \
-D PYTHON3_NUMPY_INCLUDE_DIRS=~/anaconda3/envs/yolov4/lib/python3.7/site-packages/numpy/core/include \
-D PYTHON3_PACKAGES_PATH=~/anaconda3/envs/yolov4/lib/python3.7 \
-D PYTHON3_LIBRARY=~/anaconda3/envs/yolov4/lib/libpython3.7m.so \
-D PYTHON_LIBRARIES=~/anaconda3/envs/yolov4/lib/python3.7 ../

 

 

make를 진행하기 위해서 cpu 코어수를 확인하자. (그냥 make를 진행해도 상관은 없음)

필자는 8코어 이므로 무리가 가지 않도록 1개의 코어를 제외하고 make를 진행하였다.

$ cat /proc/cpuinfo | grep processor | wc -l
$ make -j7

빌드가 완료되면 sudo make install을 하고 version을 확인해보자.

opencv4가 정상 설치되었다면, 기존의 버전 체크 명령어에 숫자 4를 추가해주면 된다.

$ sudo make install
$ pkg-config --modversion opencv4