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 소스를 실행 시켜보시면 잘 실행 될 것입니다.

그래도 해결이 안된다면... 건투를 빕니다. 당신은 꼭 해결방법을 찾을 것입니다. 그때 다시 오셔서 지식을 나눠주세요. 


반응형

+ Recent posts