HOWTO · Raspberry Pi

Raspberry Pi 4에서 OpenCV 설정

이 기사에서는 Raspberry Pi 4에 OpenCV를 설치하고 설정하는 방법을 살펴봅니다.

이 페이지의 내용

Raspberry Pi에서 OpenCV를 소스 코드로 빌드한 다음 Python 3에서 cv2를 가져와 설치 여부를 확인할 수 있습니다. 이 안내서는 Raspberry Pi OS를 실행하는 Raspberry Pi와 인터넷에 연결된 터미널을 전제로 합니다. 빌드에는 오랜 시간이 걸릴 수 있고 상당한 여유 저장 공간이 필요합니다. 빌드 시간과 가능한 병렬 작업 수는 보드, 메모리, 선택한 OpenCV 모듈에 따라 달라집니다.

Raspberry Pi와 운영체제 선택

이 소스 빌드 절차는 Raspberry Pi 4 Model B를 대상으로 하지만, 호환되는 운영체제를 사용하는 다른 Raspberry Pi 모델에서도 OpenCV를 빌드할 수 있습니다. 아래 명령은 운영체제로 Raspberry Pi OS를 사용합니다. 이는 이 안내서의 명시적인 전제이며, 특정 OS 버전이나 보드 구성을 테스트했다는 뜻은 아닙니다. 오래되었거나 메모리가 적은 보드는 컴파일에 더 오래 걸릴 수 있으며, 사용 가능한 디스크 공간이 빌드에 제약이 될 수 있습니다.

Raspberry Pi OS 준비

Pi에서 터미널을 열고 sudo apt update를 실행한 다음 sudo apt upgrade를 실행해 패키지 목록과 설치된 패키지를 업데이트합니다. sudo apt install build-essential cmake git pkg-config python3-dev python3-numpy 명령으로 build-essential, cmake, git, pkg-config, python3-dev, python3-numpy를 비롯한 컴파일러와 도구를 설치합니다. 패키지 이름과 사용 가능 여부는 Raspberry Pi OS 버전에 따라 다를 수 있습니다. 계속하기 전에 설치된 버전에 맞게 패키지 관리자 오류를 해결하세요. 소스 트리와 생성될 빌드 파일을 저장할 여유 디스크 공간도 충분히 확보해야 합니다.

python3-dev 패키지는 Python 바인딩을 구성할 때 필요한 Python 개발 헤더를 제공합니다. OpenCV를 빌드하고 확인할 때는 동일한 Python 3 설치와 환경을 사용하세요. 가상 환경을 사용한다면 시스템 Python과 가상 환경이 서로 바꿔 쓸 수 있다고 가정하지 말고, 빌드가 해당 환경의 인터프리터와 NumPy를 찾도록 준비하세요.

OpenCV를 소스 코드로 빌드하고 설치

설치된 운영체제와 Python 환경에 호환되는 OpenCV 릴리스를 선택하세요. 추가 모듈이 필요하다면 opencv-contrib에서 같은 릴리스 버전을 선택하세요. 해당 모듈은 기본 OpenCV 저장소와 별도로 제공됩니다. 두 소스 트리는 같은 릴리스 버전을 사용해야 합니다. 추가 모듈에 대한 자세한 내용은 관련 opencv-contrib 안내서를 참조하세요.

다음은 Raspberry Pi OS 터미널에서 실행할 명령줄 단계이며, 하나의 독립 실행형 프로그램은 아닙니다. 각 명령의 VERSION을 동일한 OpenCV 릴리스 태그로 바꾸세요. 다음 명령으로 일치하는 소스 트리를 홈 디렉터리에 복제합니다. 추가 모듈이 필요하면 두 번째 명령도 실행하세요: git clone --branch VERSION --depth 1 https://github.com/opencv/opencv.git ~/opencv-VERSION 및 git clone --branch VERSION --depth 1 https://github.com/opencv/opencv_contrib.git ~/opencv_contrib-VERSION. mkdir -p ~/opencv-VERSION/build로 빌드 디렉터리를 만들고 cd ~/opencv-VERSION/build로 이동합니다.

해당 디렉터리에서 cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH="$HOME/opencv_contrib-VERSION/modules" .. 명령으로 빌드를 구성합니다. 이 옵션에는 일치하는 contrib 디렉터리를 지정하세요. contrib 모듈을 빌드하지 않는다면 이 옵션을 생략합니다. 이는 구성 선택 사항이며, 사용 가능한 옵션은 선택한 릴리스와 시스템 종속성에 따라 달라집니다.

구성이 끝난 디렉터리에서 make -j2로 빌드한 다음 sudo make install로 설치합니다. Pi의 메모리가 부족해지면 작업 수를 줄이세요. 병렬 작업 수가 적을수록 일반적으로 빌드 시간이 더 오래 걸립니다. 빌드 및 설치 명령은 다운로드한 소스, 작동하는 컴파일러 도구 모음, 호환되는 종속성이 있어야 실행할 수 있으므로 여기서는 독립적인 런타임 예제로 제시할 수 없습니다.

Python에서 OpenCV 확인

빌드에 사용한 Python 3 환경에서 확인 절차를 실행하세요. 이 절차는 바인딩을 가져오고 설치된 모듈이 보고하는 버전을 표시합니다. 제공된 실행은 종료 코드 0으로 완료됐지만, 해당 런타임 환경에서는 cv2를 사용할 수 없다고 보고했습니다. 따라서 그 실행으로 OpenCV를 성공적으로 가져올 수 있음이 입증되지는 않았습니다. 표시되는 버전은 설치된 항목에 따라 다릅니다.

import importlib.util

if importlib.util.find_spec("cv2") is None:
    print("cv2 is not available in this Python environment.")
else:
    import cv2
    print(cv2.__version__)

가져오기가 성공하면 해당 인터프리터가 cv2 모듈을 찾을 수 있다는 뜻입니다. Python이 모듈을 찾을 수 없다고 보고하면 빌드에서 Python 바인딩이 설치됐는지, 명령이 의도한 인터프리터를 사용하는지 확인하세요. 버전 문자열만으로는 모든 선택적 모듈이나 카메라 장치를 사용할 수 있다고 확인할 수 없습니다.

일반적인 설치 문제 해결

Pi의 메모리가 부족한 상태에서 컴파일이 중단되면 빌드 디렉터리에서 make -j1처럼 작업 수를 줄여 빌드를 다시 실행하세요. 이렇게 하면 동시에 사용하는 리소스를 줄일 수 있지만 빌드 시간이 늘어나며, 모든 문제가 해결된다고 보장할 수는 없습니다. 로그에서 처음 발생한 컴파일러 또는 CMake 오류를 확인하고, CMake가 일치하는 opencv_contrib 모듈 디렉터리를 가리키는지 확인하세요. 두 소스 트리가 같은 릴리스 태그를 사용하는지도 확인해야 합니다.

설치 후 import cv2가 실패하면 python3가 빌드에 구성한 인터프리터인지 확인하고, 설치된 바인딩이 해당 인터프리터가 검색하는 디렉터리에 있는지 살펴보세요. 다른 Python 환경에 NumPy를 설치해도 빌드에 사용한 인터프리터에서 사용할 수 있게 되지는 않습니다.

결론

Raspberry Pi OS에서 소스 코드를 빌드할 때는 CMake로 OpenCV를 구성하고, 장치에 적절한 작업 수로 컴파일한 뒤 결과 라이브러리를 설치합니다. 일치하는 Python 3 환경에서 cv2를 가져오면 바인딩을 사용할 수 있는지 실용적으로 확인할 수 있습니다. 설치된 시스템과 호환되는 OpenCV 및 opencv-contrib 릴리스를 선택하고 두 버전을 일치시키세요. 이 안내서는 호환성 조합을 테스트해 확정하지 않았으며, 모든 Raspberry Pi 구성에서 빌드가 성공한다고 보장하지 않습니다.