iBetter Books
수정

앞 장에서 만든 face 환경 안에, 이 책의 두 기둥인 dlib과 OpenCV를 설치합니다. 둘 다 빌드가 까다로운 라이브러리지만 conda-forge를 쓰면 한 줄로 끝납니다. 다만 OpenCV에는 초보자가 자주 빠지는 함정이 하나 있어서, 이 장에서 그 함정을 피하는 법까지 함께 짚습니다.

먼저 환경이 활성화되어 있는지 확인

설치에 앞서 반드시 face 환경이 활성화되어 있어야 합니다. 프롬프트 앞에 (face)가 보이는지 확인하고, 없으면 활성화합니다.

conda activate face

이 확인을 건너뛰면 패키지가 엉뚱하게 기본 환경(base)에 깔려 나중에 버전이 꼬일 수 있습니다. 설치 전 (face) 표시 확인을 습관으로 만들어 두세요.

dlib과 OpenCV 한 번에 설치

이제 PART 01의 핵심 명령입니다. 두 라이브러리를 conda-forge 채널에서 함께 설치합니다. 이때 OpenCV는 버전을 4점대로 못 박습니다.

conda install -c conda-forge dlib "opencv=4.*"

앞 장에서 본 pip의 빌드 에러가 여기서는 나지 않습니다. conda-forge가 운영체제별로 이미 컴파일된 완제품을 제공하기 때문입니다. 한 명령에 여러 패키지를 나열하면 conda가 서로 호환되는 버전 조합을 한 번에 찾아 주므로, 따로따로 설치하는 것보다 충돌 위험이 적습니다.

opencv=4.*로 고정하나. conda-forge는 이제 OpenCV 5.0을 기본으로 내려줍니다. 그런데 5.0은 이 책이 쓰는 두 기능을 들어냈습니다. 하나는 옛 Caffe 모델을 불러오는 cv2.dnn.readNetFromCaffe(PART 02의 SSD 검출기에서 사용)이고, 다른 하나는 기본 제공 검출기 파일 경로인 cv2.data입니다. 그래서 이 책은 안정적인 4점대를 명시적으로 설치합니다. 버전을 적지 않으면 5.0이 깔려 뒤 장의 예제가 동작하지 않을 수 있습니다.

OpenCV의 함정 — opencv vs opencv-contrib

OpenCV를 설치할 때 가장 흔한 사고는 두 종류의 OpenCV를 섞어 까는 것입니다. 파이썬 생태계에는 이름이 비슷한 OpenCV 패키지가 여럿 있습니다.

패키지 이름 출처 포함 범위
opencv conda-forge 기본 + contrib(확장 모듈) 통합
opencv-python PyPI(pip) 기본 모듈만
opencv-contrib-python PyPI(pip) 기본 + contrib

문제는 pip에서 opencv-pythonopencv-contrib-python을 둘 다 설치하면 같은 cv2 모듈을 두 패키지가 서로 덮어쓰며 충돌한다는 점입니다. 이 책이 쓰는 얼굴 검출 모듈(DNN, FaceDetectorYN 등) 일부는 contrib 쪽 기능을 함께 요구하는데, 어느 쪽이 살아남았는지에 따라 "있던 함수가 갑자기 없다"는 혼란이 생깁니다.

conda-forge의 opencv 패키지는 이 문제를 깔끔하게 정리해 줍니다. 기본 모듈과 contrib 모듈이 하나로 통합되어 있어서, 위 명령 한 줄이면 추가 패키지를 더 깔 필요가 없습니다.

실무 팁. 만약 예전에 pip으로 opencv-python이나 opencv-contrib-python을 깐 적이 있다면, conda로 옮기기 전에 먼저 그것들을 지우는 편이 안전합니다. pip uninstall opencv-python opencv-contrib-python으로 제거한 뒤 conda-forge의 opencv를 설치하면 충돌의 불씨를 없앨 수 있습니다.

설치 확인

설치가 끝나면 두 라이브러리가 제대로 올라왔는지 버전으로 확인합니다.

python -c "import dlib; print('dlib', dlib.__version__)"python -c "import cv2; print('OpenCV', cv2.__version__)"
dlib 19.24.xOpenCV 4.x.x

두 줄 모두 버전이 출력되면 이 책의 검출·랜드마크 실습을 위한 토대가 마련된 것입니다. 만약 ModuleNotFoundError가 난다면 십중팔구 face 환경이 아닌 곳에서 명령을 실행한 경우이니, (face) 표시부터 다시 확인하세요.

이 장에서 기억할 것

conda install -c conda-forge dlib opencv 한 줄로 빌드 없이 두 라이브러리를 설치했고, conda-forge의 통합 opencv 패키지를 씀으로써 pip 시절의 opencv-python / opencv-contrib-python 충돌을 처음부터 피했습니다. 설치 후에는 import와 버전 출력으로 동작을 확인하는 습관을 들였습니다. 다음 장에서는 이 토대 위에 face_recognition, DeepFace, InsightFace 같은 핵심 라이브러리들을 얹습니다.