Embedded Linux

ubuntu24.04에서 OpenCV 4.10.0 빌드 및 설치

작성자 임베디드코리아 작성일25-10-09 22:16 조회5회 댓글0건
< ubuntu24.04에서 OpenCV 4.10.0 빌드 및 설치 >

1. 저장소 정보를 최신으로 맞추어 준다.

  1) 시스템 업데이트
      $ sudo apt update
  2) 시스템 업그레이드.
      $ sudo apt upgrade


2. 관련 패키지 설치
    $ sudo apt-get install build-essential cmake unzip pkg-config
    $ sudo apt-get install libjpeg-dev libtiff5-dev libpng-dev
    $ sudo apt-get install ffmpeg libavcodec-dev libavformat-dev libswscale-dev libxvidcore-dev libx264-dev libxine2-dev
    $ sudo apt-get install -y libv4l-dev v4l-utils
    $ sudo apt-get install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
    $ sudo apt-get install -y libgtk-3-dev
    $ sudo apt-get install -y libatlas-base-dev gfortran libeigen3-dev
    $ sudo apt-get install -y python3-dev python3-numpy


3. OpenCV 빌드와 설치

  1) 작업디렉터리 생성
      $ cd ~
      $ mkdir -p WORKSPACE/OpenCV
      $ cd WORKSPACE/OpenCV

    2) OpenCV 및 확장패키지 소스 다운로드
      $ w get -O opencv.zip https://github.com/opencv/opencv/archive/refs/tags/4.10.0.zip
      $ w get -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/refs/tags/4.10.0.zip

    3) 압축해제
        - 각각 압축파일을 풀어준다.
      $ unzip opencv.zip
      $ unzip opencv_contrib.zip

    4) 빌드디렉터리 생성 - 빌드를 진행할 디렉터리를 만들어 주고 이동한다.
        $ cd  opencv-4.10.0
        $ mkdir build
        $ cd build

      5) 파이선을 패키지 디렉터리 확인
        $ python3 –m site
sys.path = [
    '/home/glory/WORKSPACE/OpenCV/opencv-4.10.0/build',
    '/usr/lib/python312.zip',
    '/usr/lib/python3.12',
    '/usr/lib/python3.12/lib-dynload',
    '/usr/local/lib/python3.12/dist-packages',
    '/usr/lib/python3/dist-packages',
]
USER_BASE: '/home/glory/.local' (exists)
USER_SITE: '/home/glory/.local/lib/python3.12/site-packages' (doesn't exist)
ENABLE_USER_SITE: True


      6) 빌드 설정 -  cmake를 이용하여 빌드 환경을 설정한다.
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_PYTHON_EXAMPLES=ON -D INSTALL_C_EXAMPLES=ON -D BUILD_DOCS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_TESTS=OFF -D BUILD_PACKAGE=OFF -D BUILD_EXAMPLES=OFF -D WITH_TBB=ON -D ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda -D WITH_CUDA=ON -D WITH_CUBLAS=ON -D WITH_CUFFT=ON -D WITH_NVCUVID=ON -D WITH_IPP=OFF -D WITH_V4L=ON -D WITH_1394=OFF -D WITH_GTK=ON -D WITH_QT=OFF -D WITH_OPENGL=ON -D WITH_EIGEN=ON -D WITH_FFMPEG=ON -D WITH_GSTREAMER=ON -D BUILD_JAVA=OFF -D BUILD_opencv_python3=ON -D BUILD_opencv_python2=OFF -D BUILD_NEW_PYTHON_SUPPORT=ON -D OPENCV_SKIP_PYTHON_LOADER=ON -D OPENCV_GENERATE_PKGCONFIG=ON -D OPENCV_ENABLE_NONFREE=ON -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.10.0/modules -D WITH_CUDNN=ON -D OPENCV_DNN_CUDA=ON -D CUDA_ARCH_BIN=8.9  -D CUDA_ARCH_PTX=8.9 -D CUDNN_LIBRARY=/usr/local/cuda/lib64/libcudnn.so.8.9.7 -D CUDNN_INCLUDE_DIR=/usr/local/cuda/include  -D PYTHON3_PACKAGES_PATH=/usr/local/lib/python3.10/dist-packages  ../

      ★ 모두 한줄입니다.

    7) 빌드하기
      $ nproc      # nproc의 출력값을 j 뒤에 대입

      $ make -j12
         
    8) 설치 및 ld등록
      ① 빌드가 완료되면 시스템에 설치한다.
          $ sudo make install
      ② 등록
          $ sudo /bin/bash -c 'echo "/usr/local/lib" >> /etc/ld.so.conf.d/opencv.conf'
          $ sudo ldconfig

 
4. Python에서 작동 확인

  $ cd ~/WORKSPACE
  $ mkdir  OpenCV_Examples
  $ cd OpenCV_Examples
  $ mkdir  OpenCV_Python_Exemples
  $ cd  OpenCV_Python_Exemples
  $ vi  openCV_test.py

import cv2
import numpy as np
import time

# 테스트할 이미지 생성 (5000x5000의 랜덤 이미지)
image = np.random.randint(0, 256, (5000, 5000, 3), dtype=np.uint8)

# CPU에서 GaussianBlur 적용
start_time = time.time()
blurred_cpu = cv2.GaussianBlur(image, (15, 15), 0)
cpu_time = time.time() - start_time
print(f"CPU에서 GaussianBlur 처리 시간: {cpu_time:.4f}초")

# GPU에서 GaussianBlur 적용
if cv2.cuda.getCudaEnabledDeviceCount() > 0:
    gpu_image = cv2.cuda_GpuMat()
    gpu_image.upload(image)  # 이미지를 GPU 메모리로 업로드
   
    start_time = time.time()
    gpu_blurred = cv2.cuda.createGaussianFilter(cv2.CV_8UC3, cv2.CV_8UC3, (15, 15), 0)
    blurred_gpu = gpu_blurred.apply(gpu_image)
    gpu_time = time.time() - start_time
    print(f"GPU에서 GaussianBlur 처리 시간: {gpu_time:.4f}초")
   
    # GPU에서 처리한 이미지를 다시 CPU로 다운로드
    result_image = blurred_gpu.download()
else:
    print("CUDA를 사용할 수 없습니다.")