All about

opencv 를 python 에서 사용하다보면 import 과정에서 에러가 나는 경우가 많습니다. opencv-contrib 이 설치되지 않아서 에러가 난다던지...

opencv-contrib error 를 처음 봤을때 아주 짜증나고 당황했던 기억이 있네요.


1. opencv 는 정상적으로 import 되지만 몇몇 내장함수를 사용할 수 없는 경우


우분투에 아나콘다를 사용해서 opencv 를 사용하는 경우 파이썬에서


import cv2


코드를 사용하여 import 는 정상적으로 되는데, 막상 opencv 내장함수를 사용하면 에러가 나는 경우가 있습니다.


에러코드를 읽어보면 


"If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config"


라고 해서 libgtk2.0-dev 나 pkg-config 등을 설치하라는 식으로 내장함수 사용에 필요한 패키지를 알려줍니다. 


저는 해당 패키지를 설치해도 안되었는데 해결 방법은 아래 코드와 같고, 글 말미에 제가 겪었던 에러메세지를 적어두었습니다.


원하는 아나콘다 가상환경을 실행시킨 뒤 터미널 위에 아래 코드들을 입력해주세요.


sudo apt-get -y install libgtk2.0-dev


sudo apt-get -y install pkg-config


conda remove opencv


conda update conda


conda install --channel menpo opencv


pip install opencv-contrib-python




에러메세지


Traceback (most recent call last):

  File "siamese_tracking/run_video.py", line 158, in <module>
    main()
  File "siamese_tracking/run_video.py", line 155, in main
    track_video(tracker, net, args.video, init_box=args.init_bbox)
  File "siamese_tracking/run_video.py", line 46, in track_video
    cv2.namedWindow(display_name, cv2.WINDOW_NORMAL | cv2.WINDOW_KEEPRATIO)
cv2.error: OpenCV(3.4.2) /tmp/build/80754af9/opencv-suite_1535558553474/work/modules/highgui/src/window.cpp:615: error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function 'cvNamedWindow'



2. opencv 자체가 import 되지 않는 경우


아나콘다를 통해 설치는 정상적으로 이루어졌지만 import 시 에러가 나는 경우가 있습니다.


제 경우 opencv 를 사용하기 위해 필요한 다른 라이브러리의 버전이 하위 버전이라 그랬는데요, 해당 라이브러리를 삭제하고 다시 설치하면 됩니다.


라이브러리를 삭제할 때 "pip uninstall 라이브러리" 로 삭제하게 되면 우분투에 기본으로 깔려있는 python 의 라이브러리와, 아나콘다 설치시 해당 가상환경에 기본으로 설치되는 라이브러리 둘 중에 한개가 삭제되고, 나머지 하나가 남아서 해당 에러가 해결이 안 되었습니다.

(이렇게 아나콘다 설정을 한 제 잘못입니다.)


이 경우 "pip uninstall 라이브러리" 를 두번 사용해서 양쪽의 라이브러리를 모두 삭제한 후, 다시 설치하면 됩니다.


아래는 제가 겪었던 에러메세지 입니다.


에러메세지


Traceback (most recent call last):
  File "siamese_tracking/run_video.py", line 11, in <module>
    import cv2
ImportError: numpy.core.multiarray failed to import



opencv 자체가 C언어(혹은 C++) 기반으로 작성된 라이브러리라고 알고 있습니다. 이를 python 기반으로 사용하기 위해 만들어 놓은 라이브러리는 opencv 개발진의 공식 라이브러리가 아니라는 답변을 받았습니다. 그래서 opencv 를 사용하다가 에러를 만나게 되면 당황스럽고 짜증이 났었는데... 어찌저찌 해결은 됬지만 opencv 버전이 올라가면 python 에서 사용할 때 또 새로운 에러를 만나겠죠...?


공유하기

facebook twitter kakaoTalk kakaostory naver band
loading