python용 opencv를 어렵게 설치하고 샘플을 수행했을 때 오류가 나오면 정말 허탈하죠.
이중 아래와 같은 오류는 빈번하게 발생합니다.
python 실행 시 import cv2에서 아래와 같은 오류가 발생할 때
ImportError: /usr/local/lib/libopencv_freetype.so.3.2: undefined symbol: hb_shape
해당 오류에 대한 trackback은 아래와 같으며
trackback URL → https://github.com/opencv/opencv_contrib/issues/919
위 글의 중간 쯤에 "Kumataro"란 유저가 해결방법을 남겼습니다. ( Kumataro commented on Dec 27, 2016 • edited )
아래는 Kumataro 해결법에 대한 연결경로입니다. 아래로 직접 가셔도 되요.
연결 URL → https://github.com/Kumataro/opencv_contrib/commit/cf8c1aad2771c325b8ffffd71f31fcdc84166b68
지금 쓰고 있는 글도 위를 토대로 제가 당한 문제를 해결하고 나서 작성한 것입니다.
□ 해결방법
참고) 저의 환경은 python 2.7 - opencv 3.2.0 입니다. opencv 설치 문제이므로 python은 2.7이든 3.X든 동일한 문제가 납니다.
아래 파일을 오픈합니다.
~/opencv/opencv_contrib-3.2.0/modules/freetype/CMakeLists.txt
해당 파일의 22번째 줄을 주석처리하고 아래 파란색 명령을 추가합니다.
즉, freetype2_LIBRARIES와 harfbuzz_LIBRARIES이 제대로된 경로를 못찾아주어서 발생하는 오류입니다.
if( FREETYPE_FOUND AND HARFBUZZ_FOUND )
# ocv_define_module(freetype opencv_core opencv_imgproc PRIVATE_REQUIRED ${freetype2_LIBRARIES} ${harfbuzz_LIBRARIES} WRAP python)
ocv_define_module(freetype opencv_core opencv_imgproc PRIVATE_REQUIRED ${FREETYPE_LIBRARIES} ${HARFBUZZ_LIBRARIES} WRAP python)
ocv_include_directories( ${FREETYPE_INCLUDE_DIRS} ${HARFBUZZ_INCLUDE_DIRS}
)
이후, ~/opencv/opencv-3.2.0/build 디렉토리에서
cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D WITH_TBB=OFF \ -D WITH_IPP=OFF \ -D WITH_1394=OFF \ -D BUILD_WITH_DEBUG_INFO=OFF \ -D BUILD_DOCS=OFF \ -D INSTALL_C_EXAMPLES=ON \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D BUILD_EXAMPLES=OFF \ -D BUILD_TESTS=OFF \ -D BUILD_PERF_TESTS=OFF \ -D ENABLE_NEON=ON \ -D WITH_QT=ON \ -D WITH_OPENGL=ON \ -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.2.0/modules \ -D WITH_V4L=ON \ -D WITH_FFMPEG=ON \ -D WITH_XINE=ON \ -D BUILD_NEW_PYTHON_SUPPORT=ON \ ../ |
를 다시 수행시켜 주세요. 문제가 있던 opencv를 uninstall하실 필요는 없습니다.
대부분 이미 설정이 완료되어 있으므로 금방 끝납니다.
-- Configuring done
-- Generating done
-- Build files have been written to: /home/webnautes/opencv/opencv-3.2.0/build
이와 같은 문구를 빠르게 보게 될 겁니다.
이제 다시 컴파일을 합니다.
~/opencv/opencv-3.2.0/build$ time make -j12 |
제 컴퓨터는 CPU 코어수가 12개라 -j12입니다. 컴파일 전에 본인의 CPU 코어수를 확인해야할 필요가 있죠.
다음과 같은 명령으로 쉽게 확인이 가능합니다.
cat /proc/cpuinfo | grep processor | wc -l |
컴파일도 대부분 이미 완료되었으므로 빠르게 끝납니다.
이제 마지막 재설치 작업만 남았군요. 별건 없고 아래 명령으로 끝~
~/opencv/opencv-3.2.0/build$ sudo make install |
문제가 된 python 소스를 실행 시켜보시면 잘 실행 될 것입니다.
그래도 해결이 안된다면... 건투를 빕니다. 당신은 꼭 해결방법을 찾을 것입니다. 그때 다시 오셔서 지식을 나눠주세요.
'programming > Python' 카테고리의 다른 글
서식 지정, print format (0) | 2020.03.14 |
---|---|
pytorch GPU check (0) | 2019.11.08 |
윈도우 아나콘다 환경에서 opencv 3.X 설치 (0) | 2017.06.18 |
[펌] Python - import 와 from import 차이점 (0) | 2017.02.28 |
Python - Jupyter notebook 단축키 및 유용한 명령 모음 (0) | 2017.01.04 |