< 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를 사용할 수 없습니다.")