ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • OpenCV 개요 및 설치
    OpenCV/OpenCV_Common 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

    'OpenCV > OpenCV_Common' 카테고리의 다른 글

    영상 데이터 구조 및 표현  (2) 2023.11.06
    컴퓨터 비전 개요  (0) 2023.11.06
Designed by Tistory.