OpenCV 4.2.0과 opencv_contrib(extra modules)를 컴파일하여 Ubuntu 18.04에 설치하는 방법을 다룹니다.





1. 설치된 OpenCV 제거


2. 기존 설치된 패키지 업그레이드


3. OpenCV 컴파일 전 필요한 패키지 설치


4. OpenCV 설정과 컴파일 및 설치


5. OpenCV 설치 결과 확인

    5.1. C/C++

    5.2. Python




최초작성 2018. 6.14

최종작성 2020. 3. 29



1. 설치된 OpenCV 제거 

전에 설치했던 OpenCV가 있다면 새로 설치하는 OpenCV 4.2.0 버전이 제대로 동작하지 않기 때문에 제거해주어야 합니다.


아래처럼 보이면 OpenCV가 설치안되어 있는 상태입니다. 다음 단계로 넘어가도  됩니다.


webnautes@webnautes-pc:~$ pkg-config --modversion opencv
Package opencv was not found in the pkg-config search path.
Perhaps you should add the directory containing `opencv.pc'
to the PKG_CONFIG_PATH environment variable
No package 'opencv' found




OpenCV 2.4대 버전이 설치되어 있는 경우에는 OpenCV  2.4 버전이 출력됩니다.


webnautes@webnautes-pc:~$ pkg-config --modversion opencv
2.4.9.1



다음 명령으로 OpenCV 라이브러리 설정 파일을 포함해서 기존에 설치된 OpenCV 패키지를 삭제하고 진행해야 합니다. 


$ sudo apt-get purge  libopencv* python-opencv
$ sudo apt-get autoremove




OpenCV 3 버전이 설치되어 있다면 다음처럼 보입니다.


webnautes@webnautes-pc:~$ pkg-config --modversion opencv
3.4.2



다음 명령으로 기존에 설치된 opencv 라이브러리를 삭제합니다. 파일을 확인해서 문제 없는 파일만 y를 눌러주면 삭제가 됩니다. 

아래 명령에서 rm 다음에 있는 -i를 제거하면 물어보지 않고 전부 삭제합니다. 


webnautes@webnautes-pc:~$  sudo find /usr/local/ -name "*opencv*" -exec rm -i {} \;




2. 기존 설치된 패키지 업그레이드

OpenCV 4.2.0를 설치해주기 전에 기존에 설치된 패키지들을 업그레이드 해주기 위한 작업입니다. 

오래 걸리더라도 해주는 것이 좋습니다. 



Ubuntu 저장소(repository)로부터 패키지 리스트를 업데이트합니다.

기존에 설치된 패키지들의 새로운 버전이 저장소에 있다면 리스트를 업데이트 하기위해 실행합니다. 


$ sudo apt-get update



기존에 설치된 패키지의 새로운 버전이 있으면 업그레이드를 진행합니다.


$ sudo apt-get upgrade




3. OpenCV 컴파일 전 필요한 패키지 설치


OpenCV를 컴파일하는데 사용하는 것들이 포함된 패키지들을 설치합니다. 언급한 패키지가 이미 설치된 경우도 있을 겁니다.



build-essential 패키지에는 C/C++ 컴파일러와 관련 라이브러리, make 같은 도구들이 포함되어 있습니다.

cmake는 컴파일 옵션이나 빌드된 라이브러리에 포함시킬 OpenCV 모듈 설정등을 위해 필요합니다. 


$ sudo apt-get install build-essential cmake




pkg-config는 프로그램 컴파일 및 링크시 필요한 라이브러리에 대한 정보를 메타파일(확장자가 .pc 인 파일)로부터 가져오는데 사용됩니다. 

터미널에서 특정 라이브러리를 사용한 소스코드를 컴파일시 필요한 컴파일러 및 링커 플래그를 추가하는데 도움이 됩니다.  


$ sudo apt-get install pkg-config




특정 포맷의 이미지 파일을 불러오거나 기록하기 위해 필요한 패키지들입니다.


$ sudo apt-get install libjpeg-dev libtiff5-dev libpng-dev




특정 코덱의 비디오 파일을 읽어오거나 기록하기 위해 필요한 패키지들입니다.


$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libxvidcore-dev libx264-dev libxine2-dev




Video4Linux 패키지는 리눅스에서 실시간 비디오 캡처를 지원하기 위한 디바이스 드라이버와 API를 포함하고 있습니다. 


$ sudo apt-get install libv4l-dev v4l-utils




GStreamer는 비디오 스트리밍을 위한 라이브러리입니다. 

 

$ sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev 




OpenCV에서는 highgui 모듈을 사용하여 자체적으로 윈도우 생성하여 이미지나 비디오를 보여줄 수 있습니다. 

윈도우 생성 등의 GUI를 위해 gtk 또는 qt를 선택해서 사용가능합니다.  여기서는 gtk2를 지정해주었습니다.


$ sudo apt-get install libgtk2.0-dev



그외 선택 가능한 패키지는 다음과 같습니다.
libgtk-3-dev

libqt4-dev

libqt5-dev




OpenGL 지원하기 위해 필요한 라이브러리입니다.

 

$ sudo apt-get install mesa-utils libgl1-mesa-dri libgtkgl2.0-dev libgtkglext1-dev  




OpenCV 최적화를 위해 사용되는 라이브러리들입니다.

 

$ sudo apt-get install libatlas-base-dev gfortran libeigen3-dev




python2.7-dev와 python3-dev 패키지는 OpenCV-Python 바인딩을 위해 필요한 패키지들입니다. 

Numpy는 매트릭스 연산등을 빠르게 처리할 수 있어서 OpenCV에서 사용됩니다. 


$ sudo apt-get install python2.7-dev python3-dev python-numpy python3-numpy




4. OpenCV 설정과 컴파일 및 설치


소스 코드를 저장할 임시 디렉토리를 생성하여 이동 후.. 진행합니다.


webnautes@webnautes-pc:~$ mkdir opencv
webnautes@webnautes-pc:~$ cd opencv
webnautes@webnautes-pc:~/opencv




OpenCV 4.2.0 소스코드를 다운로드 받아 압축을 풀어줍니다.

 

$ wget -O opencv.zip https://github.com/opencv/opencv/archive/4.2.0.zip
$ unzip opencv.zip




opencv_contrib(extra modules) 소스코드를 다운로드 받아 압축을 풀어줍니다.

SIFT, SURF 등을 사용하기 위해 필요합니다.


$ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.2.0.zip
$ unzip opencv_contrib.zip




다음처럼 두 개의 디렉토리가 생성됩니다. 


webnautes@webnautes-pc:~/opencv$ ls -d */
opencv-4.2.0/  opencv_contrib-4.2.0/




opencv-4.2.0 디렉토리로 이동하여 build 디렉토리를 생성하고 build 디렉토리로 이동합니다.

컴파일은 build 디렉토리에서 이루어집니다.


webnautes@webnautes-pc:~/opencv$ cd opencv-4.0.1/
webnautes@webnautes-pc:~/opencv/opencv-4.2.0$ mkdir build
webnautes@webnautes-pc:~/opencv/opencv-4.2.0$ cd build
webnautes@webnautes-pc:~/opencv/opencv-4.2.0/build




cmake를 사용하여 OpenCV 컴파일 설정을 해줍니다. 


OpenCV 4에서 pkg-config를 디폴트로 지원하지 않는 것으로 바뀌었습니다. 

그래서 OPENCV_GENERATE_PKGCONFIG=ON 옵션을 추가해야합니다.

( 참고 https://github.com/opencv/opencv/issues/13154



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 WITH_QT=OFF \
-D WITH_GTK=ON \
-D WITH_OPENGL=ON \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.2.0/modules \
-D WITH_V4L=ON  \
-D WITH_FFMPEG=ON \
-D WITH_XINE=ON \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON ../




에러가 나는 경우 한줄로 바꾼 다음 명령을 사용하세요. 


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 WITH_QT=OFF -D WITH_GTK=ON -D WITH_OPENGL=ON -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.2.0/modules -D WITH_V4L=ON  -D WITH_FFMPEG=ON -D WITH_XINE=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D OPENCV_GENERATE_PKGCONFIG=ON ../




다음과 같은 메시지가 보이면 정상적으로 된 것입니다.


-- Configuring done

-- Generating done

-- Build files have been written to: /home/webnautes/opencv/opencv-4.2.0/build




cmake를 사용하여 진행한 OpenCV 컴파일 관련 설정 결과입니다.


-- General configuration for OpenCV 4.2.0 =====================================
--   Version control:               unknown
--
--   Extra modules:
--     Location (extra):            /home/webnautes/opencv/opencv_contrib-4.2.0/modules
--     Version control (extra):     unknown
--
--   Platform:
--     Timestamp:                   2020-03-29T09:50:36Z
--     Host:                       Linux 5.0.0-37-generic x86_64
--     CMake:                       3.10.2
--     CMake generator:             Unix Makefiles
--     CMake build tool:            /usr/bin/make
--     Configuration:               RELEASE
--
--   CPU/HW features:
--     Baseline:                    SSE SSE2 SSE3
--       requested:                 SSE3
--     Dispatched code generation:  SSE4_1 SSE4_2 FP16 AVX AVX2 AVX512_SKX
--       requested:                 SSE4_1 SSE4_2 AVX FP16 AVX2 AVX512_SKX
--       SSE4_1 (14 files):         + SSSE3 SSE4_1
--       SSE4_2 (1 files):          + SSSE3 SSE4_1 POPCNT SSE4_2
--       FP16 (0 files):            + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 AVX
--       AVX (4 files):             + SSSE3 SSE4_1 POPCNT SSE4_2 AVX
--       AVX2 (27 files):           + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2
--       AVX512_SKX (3 files):      + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2 AVX_512F AVX512_COMMON AVX512_SKX
--
--   C/C++:
--     Built as dynamic libs?:      YES
--     C++ Compiler:                /usr/bin/c++ (ver 7.5.0)
--     C++ flags (Release):         -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winit-self -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections  -msse -msse2 -msse3 -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG -DNDEBUG
--     C++ flags (Debug):           -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winit-self -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections  -msse -msse2 -msse3 -fvisibility=hidden -fvisibility-inlines-hidden -g -O0 -DDEBUG -D_DEBUG
--     C Compiler:                  /usr/bin/cc
--     C flags (Release):           -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Winit-self -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections  -msse -msse2 -msse3 -fvisibility=hidden -O3 -DNDEBUG -DNDEBUG
--     C flags (Debug):             -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Winit-self -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections  -msse -msse2 -msse3 -fvisibility=hidden -g -O0 -DDEBUG -D_DEBUG
--     Linker flags (Release):      -Wl,--gc-sections
--     Linker flags (Debug):        -Wl,--gc-sections
--     ccache:                      NO
--     Precompiled headers:         NO
--     Extra dependencies:          dl m pthread rt /usr/lib/x86_64-linux-gnu/libGL.so /usr/lib/x86_64-linux-gnu/libGLU.so
--     3rdparty dependencies:
--
--   OpenCV modules:
--     To be built:                 aruco bgsegm bioinspired calib3d ccalib core datasets dnn dnn_objdetect dnn_superres dpm face features2d flann freetype fuzzy gapi hfs highgui img_hash imgcodecs imgproc line_descriptor ml objdetect optflow phase_unwrapping photo plot python2 python3 quality reg rgbd saliency shape stereo stitching structured_light superres surface_matching text tracking video videoio videostab xfeatures2d ximgproc xobjdetect xphoto
--     Disabled:                    world
--     Disabled by dependency:      -
--     Unavailable:                 cnn_3dobj cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev cvv hdf java js matlab ovis sfm ts viz
--     Applications:                apps
--     Documentation:               NO
--     Non-free algorithms:         NO
--
--   GUI:
--     GTK+:                       YES (ver 2.24.32)
--       GThread :                  YES (ver 2.56.4)
--       GtkGlExt:                  YES (ver 1.2.0)
--     OpenGL support:              YES (/usr/lib/x86_64-linux-gnu/libGL.so /usr/lib/x86_64-linux-gnu/libGLU.so)
--     VTK support:                 NO
--
--   Media I/O:
--     ZLib:                       /usr/lib/x86_64-linux-gnu/libz.so (ver 1.2.11)
--     JPEG:                       libjpeg-turbo (ver 2.0.2-62)
--     WEBP:                       build (ver encoder: 0x020e)
--     PNG:                       /usr/lib/x86_64-linux-gnu/libpng.so (ver 1.6.34)
--     TIFF:                       build (ver 42 - 4.0.10)
--     JPEG 2000:                   build (ver 1.900.1)
--     OpenEXR:                     build (ver 2.3.0)
--     HDR:                       YES
--     SUNRASTER:                   YES
--     PXM:                       YES
--     PFM:                       YES
--
--   Video I/O:
--     FFMPEG:                      YES
--       avcodec:                   YES (57.107.100)
--       avformat:                  YES (57.83.100)
--       avutil:                   YES (55.78.100)
--       swscale:                   YES (4.8.100)
--       avresample:                NO
--     GStreamer:                   YES (1.14.5)
--     v4l/v4l2:                    YES (linux/videodev2.h)
--     Xine:                       YES (ver 1.2.8)
--
--   Parallel framework:            pthreads
--
--   Trace:                         YES (with Intel ITT)
--
--   Other third-party libraries:
--     Lapack:                      NO
--     Eigen:                       YES (ver 3.3.4)
--     Custom HAL:                  NO
--     Protobuf:                    build (3.5.1)
--
--   OpenCL:                        YES (no extra features)
--     Include path:                /home/webnautes/opencv/opencv-4.2.0/3rdparty/include/opencl/1.2
--     Link libraries:              Dynamic load
--
--   Python 2:
--     Interpreter:                 /usr/bin/python2.7 (ver 2.7.17)
--     Libraries:                   /usr/lib/x86_64-linux-gnu/libpython2.7.so (ver 2.7.17)
--     numpy:                       /usr/lib/python2.7/dist-packages/numpy/core/include (ver 1.13.3)
--     install path:                lib/python2.7/dist-packages/cv2/python-2.7
--
--   Python 3:
--     Interpreter:                 /usr/bin/python3 (ver 3.6.9)
--     Libraries:                   /usr/lib/x86_64-linux-gnu/libpython3.6m.so (ver 3.6.9)
--     numpy:                       /home/webnautes/.local/lib/python3.6/site-packages/numpy/core/include (ver 1.17.4)
--     install path:                lib/python3.6/dist-packages/cv2/python-3.6
--
--   Python (for build):            /usr/bin/python2.7
--
--   Java:                         
--     ant:                       NO
--     JNI:                       NO
--     Java wrappers:               NO
--     Java tests:                  NO
--
--   Install to:                    /usr/local
-- -----------------------------------------------------------------
--
-- Configuring done
-- Generating done
-- Build files have been written to: /home/webnautes/opencv/opencv-4.2.0/build




다음처럼 Python 2 또는 Python 3 라이브러리 항목이 보이지 않는 경우에는   


--   Python 2:
--     Interpreter:                 /usr/bin/python2.7 (ver 2.7.17)
--     Libraries:                   /usr/lib/x86_64-linux-gnu/libpython2.7.so (ver 2.7.17)
--     numpy:                       /usr/lib/python2.7/dist-packages/numpy/core/include (ver 1.13.3)
--     install path:                lib/python2.7/dist-packages/cv2/python-2.7
--
--   Python 3:
--     Interpreter:                 /usr/bin/python3 (ver 3.6.9)
--     Libraries:                   /usr/lib/x86_64-linux-gnu/libpython3.6m.so (ver 3.6.9)
--     numpy:                       /home/webnautes/.local/lib/python3.6/site-packages/numpy/core/include (ver 1.17.4)
--     install path:                lib/python3.6/dist-packages/cv2/python-3.6




붉은색 줄처럼 해당 경로들을 직접 적어줘야 합니다.   포스팅에서 사용한 옵션과 차이가 있을 수 있습니다. 


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 WITH_QT=OFF \

-D WITH_GTK=ON \

-D WITH_OPENGL=ON \

-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.2.0/modules \

-D WITH_V4L=ON  \

-D WITH_FFMPEG=ON \

-D WITH_XINE=ON \

-D BUILD_NEW_PYTHON_SUPPORT=ON \

-D OPENCV_GENERATE_PKGCONFIG=ON \
-D PYTHON2_INCLUDE_DIR=/usr/include/python2.7 \

-D PYTHON2_NUMPY_INCLUDE_DIRS=/usr/lib/python2.7/dist-packages/numpy/core/include/ \

-D PYTHON2_PACKAGES_PATH=/usr/lib/python2.7/dist-packages \

-D PYTHON2_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython2.7.so \

-D PYTHON3_INCLUDE_DIR=/usr/include/python3.6m \

-D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/dist-packages/numpy/core/include/  \

-D PYTHON3_PACKAGES_PATH=/usr/lib/python3/dist-packages \

-D PYTHON3_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.6m.so \

../




컴파일을 시작하기 전에 사용 중인 컴퓨터의 CPU 코어수를 확인합니다.


$ cat /proc/cpuinfo | grep processor | wc -l
4




make 명령을 사용하여 컴파일을 시작합니다. -j 다음에 위에서 확인한 숫자를 붙여서 실행해줍니다.

앞에 time을 붙여서 실행하면 컴파일 완료 후 걸린 시간을 알려줍니다.


webnautes@webnautes-pc:~/opencv/opencv-4.2.0/build$ time make -j4



컴파일 성공하면 다음과 같은 메시지를 볼 수 있습니다.


[100%] Building CXX object modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.o
[100%] Building CXX object modules/python2/CMakeFiles/opencv_python2.dir/__/src2/cv2.cpp.o
[100%] Linking CXX shared module ../../lib/python3/cv2.cpython-36m-x86_64-linux-gnu.so
[100%] Linking CXX shared module ../../lib/cv2.so
[100%] Built target opencv_python3
[100%] Built target opencv_python2

real 17m15.631s
user 55m47.050s
sys 2m39.468s



참고로 i5, SSD, 16G 메모리를 장착한 노트북에서 컴파일한데 걸린 시간은  위 결과에서 user + sys를 더한 약 57분입니다. 



이제 컴파일 결과물을 설치합니다.

 

webnautes@webnautes-pc:~/opencv/opencv-4.2.0/build$ sudo make install



/etc/ld.so.conf.d/ 디렉토리에 /usr/local/lib를 포함하는 설정파일이 있는지 확인합니다.


webnautes@webnautes-pc:~/opencv/opencv-4.2.0/build$ cat /etc/ld.so.conf.d/*
/usr/lib/x86_64-linux-gnu/libfakeroot

# libc default configuration

/usr/local/lib

# Multiarch support

/usr/local/lib/x86_64-linux-gnu

/lib/x86_64-linux-gnu

/usr/lib/x86_64-linux-gnu




/usr/local/lib이 출력되지 않았다면 다음 명령을 추가로 실행해야합니다.


webnautes@webnautes-pc:~/opencv/opencv-4.2.0/build$  sudo sh -c 'echo '/usr/local/lib' > /etc/ld.so.conf.d/opencv.conf'




/usr/local/lib을 찾은 경우나 못찾아서 추가한 작업을 한 경우 모두 컴파일시 opencv  라이브러리를 찾을 수 있도록 다음 명령을 실행합니다.


webnautes@webnautes-pc:~/opencv/opencv-4.0.1/build$ sudo ldconfig




5. OpenCV 설치 결과 확인 

5.1. C/C++

OpenCV 3과 달리 opencv대신에 opencv4를 옵션으로 사용하여 pkg-config를 실행해야 컴파일할 수 있습니다. 

$ g++ -o facedetect /usr/local/share/opencv4/samples/cpp/facedetect.cpp $(pkg-config opencv4 --libs --cflags)



실행시켜보면 얼굴 인식이 됩니다. 

$ ./facedetect --cascade="/usr/local/share/opencv4/haarcascades/haarcascade_frontalface_alt.xml" --nested-cascade="/usr/local/share/opencv4/haarcascades/haarcascade_eye_tree_eyeglasses.xml" --scale=1.3



다음 포스팅도 참고하세요. 



Visual Studio Code에서 CMake 사용하여 OpenCV 코드 컴파일 하기

https://webnautes.tistory.com/933 





5.2. Python

1. python 2.x와 python 3x에서 opencv 라이브러리를 사용가능한지는 다음처럼 확인합니다.

각각 OpenCV 버전이 출력되어야 합니다.

webnautes@webnautes-pc:~/opencv/opencv-4.2.0/build$ python
Python 2.7.17 (default, Nov  7 2019, 10:07:09) 

[GCC 7.4.0] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> import cv2

>>> cv2.__version__

'4.2.0'

>>> 



webnautes@webnautes-pc:~/opencv/opencv-4.2.0/build$ python3
Python 3.6.9 (default, Nov  7 2019, 10:44:02) 

[GCC 8.3.0] on linux

Type "help", "copyright", "credits" or "license" for more information.

>>> import cv2

>>> cv2.__version__

'4.2.0'

>>> 



혹시 다른 버전이 나온다면 다음 위치에 있는 cv2 디렉토리를 삭제하고 다시 해보세요.


sudo rm -rf ~ /.local/lib/python3.6/site-packages/cv2




2. 기존 OpenCV 3를 삭제 후 진행했다면 다음과 같은 에러가 날 수 있습니다.


webnautes@webnautes-pc:~/opencv/opencv-4.2.0/build$ python
Python 2.7.17 (default, Nov  7 2019, 10:07:09) 

[GCC 7.4.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: libopencv_reg.so.3.4: cannot open shared object file: No such file or directory



다음 처럼  cv2.so를 복사해줘야 합니다.


webnautes@webnautes-pc:~/opencv/opencv-4.2.0/build$ sudo cp /usr/local/python/cv2/python-2.7/cv2.so /usr/local/lib/python2.7/dist-packages/

webnautes@webnautes-pc:~/opencv/opencv-4.2.0/build$ sudo cp /usr/local/python/cv2/python-2.7/cv2.so /usr/lib/python2.7/dist-packages/

webnautes@webnautes-pc:~/opencv/opencv-4.2.0/build$ sudo cp /usr/local/python/cv2/python-3.6/cv2.cpython-36m-x86_64-linux-gnu.so /usr/lib/python3/dist-packages

webnautes@webnautes-pc:~/opencv/opencv-4.2.0/build$ sudo cp /usr/local/python/cv2/python-3.6/cv2.cpython-36m-x86_64-linux-gnu.so /usr/local/lib/python3.6/dist-packages



3. 예제 코드를 실행해봅니다.


$  python /usr/local/share/opencv4/samples/python/facedetect.py --cascade "/usr/local/share/opencv4/haarcascades/haarcascade_frontalface_alt.xml" --nested-cascade "/usr/local/share/opencv4/haarcascades/haarcascade_eye_tree_eyeglasses.xml" /dev/video0



$  python3 /usr/local/share/opencv4/samples/python/facedetect.py --cascade "/usr/local/share/opencv4/haarcascades/haarcascade_frontalface_alt.xml" --nested-cascade "/usr/local/share/opencv4/haarcascades/haarcascade_eye_tree_eyeglasses.xml" /dev/video0




다음처럼  터미널에 표시되면서 카메라 영상에 얼굴이 검출된 결과를 얻을 수 있습니다.


python2


webnautes@webnautes-pc:~/opencv/opencv-4.2.0/build$  python /usr/local/share/opencv4/samples/python/facedetect.py --cascade "/usr/local/share/opencv4/haarcascades/haarcascade_frontalface_alt.xml" --nested-cascade "/usr/local/share/opencv4/haarcascades/haarcascade_eye_tree_eyeglasses.xml" /dev/video0


face detection using haar cascades


USAGE:

    facedetect.py [--cascade <cascade_fn>] [--nested-cascade <cascade_fn>] [<video_source>]


[ INFO:0] Initialize OpenCL runtime...



python3


webnautes@webnautes-pc:~/opencv/opencv-4.2.0/build$   python3 /usr/local/share/opencv4/samples/python/facedetect.py --cascade "/usr/local/share/opencv4/haarcascades/haarcascade_frontalface_alt.xml" --nested-cascade "/usr/local/share/opencv4/haarcascades/haarcascade_eye_tree_eyeglasses.xml" /dev/video0


face detection using haar cascades


USAGE:

    facedetect.py [--cascade <cascade_fn>] [--nested-cascade <cascade_fn>] [<video_source>]


[ INFO:0] Initialize OpenCL runtime...




4. 이제 필요 없어진 컴파일에 사용했던 opencv 소스코드 디렉토리를 삭제합니다.


webnautes@webnautes-pc:~/opencv/opencv-4.2.0/build$ cd
webnautes@webnautes-pc:~$ rm -rf opencv




포스트 작성시에는 문제 없었지만 이후 문제가 생길 수 있습니다.
댓글로 알려주시면 빠른 시일내에 답변을 드리겠습니다.

여러분의 응원으로 좋은 컨텐츠가 만들어집니다.
지금 본 내용이 도움이 되었다면 유튜브 구독 부탁드립니다. 감사합니다 : )

유튜브 구독하기


후원계좌 카카오뱅크 3355112417955

  1. 초보자 2018.12.05 15:06

    순차적으로 다 따라해서 진행되고 있었는데요

    python 예제를 실행하면 오류가 발생합니다.

    facedetect.py [--cascade <cascade_fn>] [--nested-cascade <cascade_fn>] [<video_source>]

    [ WARN:0] cv::samples::findFile('samples/data/lena.jpg') => '/home/pie/opencv/opencv-4.0.0/build/..//samples/data/lena.jpg'

    (python:15271): GStreamer-CRITICAL **: 22:04:41.489:
    Trying to dispose element appsink0, but it is in READY instead of the NULL state.
    You need to explicitly set elements to the NULL state before
    dropping the final reference, to allow them to clean up.
    This problem may also be caused by a refcounting bug in the
    application or some element.


    (python:15271): GStreamer-CRITICAL **: 22:04:41.489:
    Trying to dispose element videoconvert0, but it is in PAUSED instead of the NULL state.
    You need to explicitly set elements to the NULL state before
    dropping the final reference, to allow them to clean up.
    This problem may also be caused by a refcounting bug in the
    application or some element.


    (python:15271): GStreamer-CRITICAL **: 22:04:41.489:
    Trying to dispose element pipeline0, but it is in READY instead of the NULL state.
    You need to explicitly set elements to the NULL state before
    dropping the final reference, to allow them to clean up.
    This problem may also be caused by a refcounting bug in the
    application or some element.


    (python:15271): GStreamer-CRITICAL **: 22:04:41.489: gst_element_get_state: assertion 'GST_IS_ELEMENT (element)' failed

    (python:15271): GStreamer-CRITICAL **: 22:04:41.490: gst_element_post_message: assertion 'GST_IS_ELEMENT (element)' failed
    select timeout
    VIDIOC_DQBUF: Resource temporarily unavailable
    Traceback (most recent call last):
    File "/usr/local/share/OpenCV/samples/python/facedetect.py", line 53, in <module>
    gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    cv2.error: OpenCV(4.0.0) /home/pie/opencv/opencv-4.0.0/modules/imgproc/src/color.cpp:181: error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'


    혹시 어느 부분이 문제인지 짚어주실수 있을까요?

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2018.12.05 15:18 신고

      다음 포스팅의 예제로 웹캠으로 부터 영상이 들어오는지 확인해보세요..

      OpenCV Python 예제 - 동영상 다루기
      https://webnautes.tistory.com/577

    • 초보자 2018.12.05 16:40

      OpenCV Python 예제 - 동영상 다루기
      https://webnautes.tistory.com/577

      링크주신 예제는 정상적으로 다 실행이 됩니다.

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2018.12.05 16:54 신고

      입력 영상이 웹캠이면 문제없어야 하는데 이상하군요. 실행할때 끝에 /dev/video0를 붙였나요?

  2. 초보자 2018.12.05 17:09

    pie@ubuntu:~$ python /usr/local/share/OpenCV/samples/python/facedetect.py --cascade "/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml" --nested-cascade "/usr/local/share/OpenCV/haarcascades/haarcascade_eye_tree_eyeglasses.xml" /dev/video0

    face detection using haar cascades

    USAGE:
    facedetect.py [--cascade <cascade_fn>] [--nested-cascade <cascade_fn>] [<video_source>]

    [ WARN:0] cv::samples::findFile('samples/data/lena.jpg') => '/usr/local/lib/../share/opencv4/samples/data/lena.jpg'

    (python:6562): GStreamer-CRITICAL **: 00:02:07.573:
    Trying to dispose element appsink0, but it is in READY instead of the NULL state.
    You need to explicitly set elements to the NULL state before
    dropping the final reference, to allow them to clean up.
    This problem may also be caused by a refcounting bug in the
    application or some element.


    (python:6562): GStreamer-CRITICAL **: 00:02:07.573:
    Trying to dispose element videoconvert0, but it is in PAUSED instead of the NULL state.
    You need to explicitly set elements to the NULL state before
    dropping the final reference, to allow them to clean up.
    This problem may also be caused by a refcounting bug in the
    application or some element.


    (python:6562): GStreamer-CRITICAL **: 00:02:07.574:
    Trying to dispose element pipeline0, but it is in READY instead of the NULL state.
    You need to explicitly set elements to the NULL state before
    dropping the final reference, to allow them to clean up.
    This problem may also be caused by a refcounting bug in the
    application or some element.


    (python:6562): GStreamer-CRITICAL **: 00:02:07.574: gst_element_get_state: assertion 'GST_IS_ELEMENT (element)' failed

    (python:6562): GStreamer-CRITICAL **: 00:02:07.574: gst_element_post_message: assertion 'GST_IS_ELEMENT (element)' failed
    select timeout
    VIDIOC_DQBUF: Resource temporarily unavailable
    Traceback (most recent call last):
    File "/usr/local/share/OpenCV/samples/python/facedetect.py", line 53, in <module>
    gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    cv2.error: OpenCV(4.0.0) /home/pie/opencv/opencv-4.0.0/modules/imgproc/src/color.cpp:181: error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'


    붙여서 진행했는데 안되네요 ㅠㅠ

    환경은 노트북의 내장된 캠 BisonCam NB pro 으로 하고 있는데
    리눅스 내에서 cheese 를 사용하면 장치 인식은 한거 같은데 화면이 검은색에 아무 버튼도 활성화가 안되고
    guvcview 로 확인하면 스냅샷 및 동영상이 다 찍히구요..

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2018.12.05 17:22 신고

      웸캠을 위한 드라이버 문제로 디바이스 파일 /dev/video0가 오동작하는 듯합니다

      얼굴 인식 소스코드를 편집해서 강제로 VideoCapture 함수에서 0을 아규먼트로 사용하도록 변경해야 할듯합니다.

    • 초보자 2018.12.05 17:31

      제가 처음 접해보는거라 그러는데 facedetect.py 의 어떤 부분을 수정해야하는지 알려주실수 있을까요 ㅠ

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2018.12.05 17:51 신고

      49번째 줄을 다음처럼 수정하세요

      cam = cv.VideoCapture(0)

    • 초보자 2018.12.05 18:45

      root@ubuntu:/home/pie/opencv/opencv-4.0.0/build# python /usr/local/share/OpenCV/samples/python/facedetect.py --cascade "/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml" --nested-cascade "/usr/local/share/OpenCV/haarcascades/haarcascade_eye_tree_eyeglasses.xml" /dev/video0

      face detection using haar cascades

      USAGE:
      facedetect.py [--cascade <cascade_fn>] [--nested-cascade <cascade_fn>] [<video_source>]


      (python:14310): GStreamer-CRITICAL **: 01:43:42.299: gst_element_get_state: assertion 'GST_IS_ELEMENT (element)' failed
      VIDEOIO ERROR: V4L: can't open camera by index 0
      Traceback (most recent call last):
      File "/usr/local/share/OpenCV/samples/python/facedetect.py", line 53, in <module>
      gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
      cv2.error: OpenCV(4.0.0) /home/pie/opencv/opencv-4.0.0/modules/imgproc/src/color.cpp:181: error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'


      49번째 줄 수정하고 실행했는데 이렇게 나옵니다 ㅠㅠ

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2018.12.05 18:46 신고

      웹캠 문제가 맞나보군요..

      -1로 변경해보세요..

      사용 가능한 카메라 인덱스를 자동으로 찾아서 연결해줍니다.

    • 초보자 2018.12.05 18:52

      번거롭게 계속 질문 드려서 죄송합니다.

      root@ubuntu:/home/pie/opencv/opencv-4.0.0/build# python /usr/local/share/OpenCV/samples/python/facedetect.py --cascade "/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml" --nested-cascade "/usr/local/share/OpenCV/haarcascades/haarcascade_eye_tree_eyeglasses.xml" /dev/video0

      face detection using haar cascades

      USAGE:
      facedetect.py [--cascade <cascade_fn>] [--nested-cascade <cascade_fn>] [<video_source>]


      (python:14366): GStreamer-CRITICAL **: 01:51:25.805: gst_element_get_state: assertion 'GST_IS_ELEMENT (element)' failed
      select timeout
      VIDIOC_DQBUF: Resource temporarily unavailable
      Traceback (most recent call last):
      File "/usr/local/share/OpenCV/samples/python/facedetect.py", line 53, in <module>
      gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
      cv2.error: OpenCV(4.0.0) /home/pie/opencv/opencv-4.0.0/modules/imgproc/src/color.cpp:181: error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'


      49행의 VideoCapture(-1) 로 진행했더니
      이런 결과가 나왔습니다.

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2018.12.05 18:53 신고

      다른 웹캠을 사용할 수 밖에 없는 듯합니다.

    • 초보자 2018.12.05 18:55

      번거로우실텐데 시간내어 답변해주셔서 감사합니다.

  3. asdf 2018.12.09 14:27

    안녕하세요.
    YOLO 학습한 뒤 영상 테스트를 위해 opencv를 설치하려고 하는 중입니다.
    make install 이후에 pkg-config 확인할 때 설치됐다고 안 나와서 visual code로 해보려 했는데 이것도 설치에 문제가 생겨서요..
    opencv 컴파일 설정할 때 OPENCV_GENERATE_PKGCONFIG=ON 옵션 줬더니 컴파일 성공하긴 했습니다.
    그런데 pkg-config로는 설치되지 않았다고 하네요.ㅠㅠ결국 실패했지만 컴파일 성공하는 경우에 말해달라고 하셔서 댓글 답니다.
    평소에도 많이 들르고 있고, 이번에도 포스팅 도움 많이 받았습니다. 감사합니다!

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2018.12.09 14:31 신고

      감사합니다. 저도 pkg-config 활성화가 안되서 cmake를 사용해서 컴파일 합니다

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2018.12.09 14:32 신고

      visual studio code 는 어떤 문제가 생기나요?

  4. Yuu 2018.12.12 00:19

    Opencv를 삭제하는건데 마지막에 opencv 디렉토리를 왜 삭제하는건가요? 혹시 저거 보고 삭제했다면, 다시 깔아야 사용할 수 있는건가요.....ㅠ

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2018.12.12 00:22 신고

      소스코드는 필요없어서 지우는 겁니다. 예제 코드가 필요해서라면 포스팅 앞부분 보고 소스코드를 다시 다운로드 받으세요.

    • Yuu 2018.12.12 00:38

      cd 하고 opencv라고 치면 찾을수 없다고 뜨는데, 그래도 우분투안에는 opencv가 남아있고.. 사용할 수 있는거죠??

    • Yuu 2018.12.12 00:56

      아아 제가 첨 댓글에 Opencv설치하는건데 를 삭제라고 잘 못 썼네요

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2018.12.12 08:25 신고

      opencv 폴더를 지워도 OpenCV는 사용가능합니다

  5. 입문하는초보 2019.01.10 11:21

    python 예제 실행시 이런 오류가 발생합니다 !!ㅠㅠ

    왜이러는 걸까요??

    sangbeom@sangbeom-VirtualBox:~/opencv/opencv-4.0.0/build$ python /usr/local/share/opencv4/samples/python/facedetect.py --cascade "/usr/local/share/opencv4/haarcascades/haarcascade_frontalface_alt.xml" --nested-cascade "/usr/local/share/opencv4/haarcascades/haarcascade_eye_tree_eyeglasses.xml" /dev/video0

    face detection using haar cascades

    USAGE:
    facedetect.py [--cascade <cascade_fn>] [--nested-cascade <cascade_fn>] [<video_source>]

    Traceback (most recent call last):
    File "/usr/local/share/opencv4/samples/python/facedetect.py", line 46, in <module>
    cascade = cv.CascadeClassifier(cv.samples.findFile(cascade_fn))
    AttributeError: 'module' object has no attribute 'samples'

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.01.10 11:55 신고

      해당 위치에 haarcascades/haarcascade_frontalface_alt.xml 파일과 haarcascade_eye_tree_eyeglasses.xml 파일이 없는 듯합니다.

      컴파일할 때 사용한 소스 코드 폴더의 opencv-4.0.0/data/haarcascades/ 경로에 있는 xml 파일을 사용해서 해보세요.

    • 입문하는초보 2019.01.10 12:04

      답변 감사합니다...
      완전 초보라 그런데
      컴파일할 때 사용한 소스 코드 폴더의 opencv-4.0.0/data/haarcascades/ 경로에 있는 xml 파일을 사용해서 해보세요.

      요게 무슨 말이죠?ㅠㅠ...

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.01.10 12:22 신고

      webnautes만 사용하는 아이디로 변경해서 해보세요.

      python /usr/local/share/opencv4/samples/python/facedetect.py --cascade "/home/webnautes/opencv/opencv-4.0.0/data/haarcascades/haarcascade_frontalface_alt.xml" --nested-cascade "/home/webnautes/opencv/opencv-4.0.0/data/haarcascades/haarcascade_eye_tree_eyeglasses.xml" /dev/video0

    • 입문하는초보 2019.01.10 13:13

      똑같은 오류가 뜨지만 답변 감사합니다!!!
      조금 더 이것저것 해보겠습니다!!
      항상 좋은 자료 감사합니다 ㅎㅎ

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.01.10 13:30 신고

      xml 파일 경로만 조정하면 해결할수 있습니다

    • 입문하는초보 2019.01.10 14:05

      ./facedetect --cascade="/usr/local/share/opencv4/haarcascades/haarcascade_frontalface_alt.xml" --nested-cascade="/usr/local/share/opencv4/haarcascades/haarcascade_eye_tree_eyeglasses.xml" --scale=1.3

      (facedetect:4219): GStreamer-CRITICAL **: 14:03:29.876: gst_element_get_state: assertion 'GST_IS_ELEMENT (element)' failed
      VIDEOIO ERROR: V4L: can't open camera by index 0
      Capture from camera #0 didn't work


      요게 맞나요?!.... 해결되긴했는데 ;;;요렇게 되버렸네욤..

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.01.10 14:16 신고

      웹캠이 인식이 안되나 봅니다

    • 입문하는초보 2019.01.10 14:24

      완전 감사합니다 ㅠㅠㅠ
      작성자님은 정말 구세주예요 정말!!

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.01.10 15:18 신고

      해결되어서 다행이네요 ^^

    • 입문하는초보 2019.01.10 17:55

      네네!! 원인은 웹캠쪽에 문제가 있던거 같아요!!! 너무 옛날 제품을 사용했었는데 교체 후 해결되었습니다. 다른 분들도 참고하세요~~

  6. Favicon of https://j-remind.tistory.com BlogIcon J_Remind 2019.01.19 23:58 신고

    안녕하세요.

    포스터를 따라서 opencv, opencv_contrib, cmake 할때 (OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.0.0/modules \) 버전만 4.0.0 으로 바꿔서 진행하고 있었습니다.
    그런데 make -j4 진행시 다음과 같은 에러가 발생하는데 해결법을 알수 있을까요??

    [100%] Building CXX object modules/python2/CMakeFiles/opencv_python2.dir/__/src2/cv2.cpp.o
    [100%] Building CXX object modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.o
    c++: internal compiler error: Killed (program cc1plus)
    Please submit a full bug report,
    with preprocessed source if appropriate.
    See <file:///usr/share/doc/gcc-7/README.Bugs> for instructions.
    modules/python3/CMakeFiles/opencv_python3.dir/build.make:62: recipe for target 'modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.o' failed
    make[2]: *** [modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.o] Error 4
    CMakeFiles/Makefile2:8591: recipe for target 'modules/python3/CMakeFiles/opencv_python3.dir/all' failed
    make[1]: *** [modules/python3/CMakeFiles/opencv_python3.dir/all] Error 2
    make[1]: *** Waiting for unfinished jobs....

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.01.20 00:22 신고

      make -j4로 에러발생했을때 make로 해결가능할 수 있습니다

  7. jayl 2019.02.17 23:02

    opencv 3.2와 4.0을 모두 설치하고 사용하는것에 대해 문의 드립니다.

    로봇 프로그래밍을 하기에 ros-melodic에서 지원되는 cv 3.2버전이 자동 설치되었습니다.
    위의 설명대로 관련 패키지나 lib를 모두 삭제하고 4.0을 설치하는것 까진 되었으나...
    완벽하게 3.2가 제거되질 않습니다. (위의 경로와 다른곳에 3.2 lib파일들이 남아있고, ros사용중에 이 파일들을 참고하는걸 확인했습니다.)

    또한 ros 패키지를 사용하고 설치하다보면 다시금 3.2 버전이 설치가 되어 버립니다.
    간혹 ros에서 3.2버전과 4.0 버전이 충돌 가능성이 있다는 경고 메세지를 보기는 하지만.. 현재까지는 크게 문제 없이 쓰고 있는데요.

    4.0을 삭제하는건 가능하지만 3.2를 삭제하거나.. ros에서 4.0을 사용하게 강제로 변경하는 방법 등을 몰라 4.0을 삭제하고 나니..
    4.0 설치 후 공부했던 소스나 예제들은 모두 4.0 lib를 요구해서 정상적으로 작동을 하지 않습니다.

    아직 이쪽 분야에서 초보라 어떻게 대처하는게 좋을지 방향좀 잡아주시면 감사하겠습니다.
    그 후는 구글링을 통해서라도 스스로 해결하겠습니다.

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.02.17 23:40 신고

      포스팅의 1. 설치된 OpenCV 제거 에서 소개한대로 opencv 이름 붙은 파일을 모두 제거하세요.

      sudo find /usr/local/ -name "*opencv*" -exec rm -i {} \;

      그리고 나서 opencv를 새로 컴파일해서 설치하면 해당 버전을 사용할 수 있습니다.

      3.2와 4.0을 같이 사용하면 문제가 생길듯합니다.
      4.0에 의존적인 OpenCV 함수가 없다면
      3.2만 사용해도 되지 않을까 싶습니다.

      기존 코드들이 4.0을 찾는다는 것은 무슨의미인지요?
      컴파일시 어떤 방식으로 하나요?
      cmake or makefile


  8. jayl 2019.02.18 10:21

    컴파일은 makefile로 합니다.(따라하면서 공부한게 아직은 그거 뿐이라..)
    기존 코드들이 4.0을 찾는다는건...
    4.0.1 버전 설치 후 수행했던 각종 예제들입니다.
    참고했던 sample폴더 자체가 사라졌으니 그 내부에 있던 파일들도 모조리 사라졌고요.
    카메라가 켜지다가 다시 꺼지는 등 정상적으로 되질 않더군요.

    ros에서 3.2가 연동되어 있다보니.. ros에서 opencv를 사용코자 할 때에는 관련 패키지들이 3.2버젼을 설치하고 검색하는거 같습니다.
    /usr/local에 있는 모든 3.2 파일을 삭제하여도,
    여러곳에 잔여 파일들이 있더군요.
    대표적으로 /usr/local/lib에 있는 libopencv....3.2.... 이런파일들이 상당수 존재합니다.
    (이곳에 있는 3.2 lib파일을 ros에서 참조하려고 했었고, 이때 4.0과 충돌이 될 수 있다는 메세지를 띄웠습니다.)

    현재는 관련 ros 패키지 및 구석구석에 있는 모든 cv 3.2 및 4.0 관련 파일들을 삭제하고,
    ros 패키지 설치하면서 다시 3.2만 설치된 상황입니다.
    (특이한건 ros 패키지를 재 설치 하였지만, /usr/local/lib 폴더에 libopencv....3.2파일들은 재생성되지 않았습니다.)
    python2에서는 import cv가 되는 상태입니다.

    우선은 3.2 버전을 주로 사용하고, 4.0으로 공부했던 예제들중 작동이 안되는건 한번 더 공부한다 생각하고 3.2에 맞게 뜯어 고쳐볼 생각입니다.

    • jayl 2019.02.18 10:36

      정정합니다.
      /usr/lib/x86_64-linux-gnu
      폴더에 libopencv*.3.2 파일들이 다수 존재했었고, 이 파일들을 ros에서 참조하려고 했었으며, 그 때 4.0과 충돌이 날 수 있다는 경고 메세지가 발생하였습니다.
      사용하고자 하는 ros 패키지를 설치하면서 3.2가 자동적으로 재설치되고 위의 폴더에 각종 3.2 lib 파일들이 생성되었습니다.

  9. sandoooo 2019.04.26 01:10

    웹캠에 영상은 뜨는데

    이런 경고가 뜨네요 문제가 있는걸까요,,,?

    [ WARN:0] cv::samples::findFile('samples/data/lena.jpg') => '/home/sandooo/opencv/opencv-4.0.1/build/..//samples/data/lena.jpg'

    • sandoooo 2019.04.26 01:13

      C/C++로 하려고
      ./facedetect --cascade="/usr/local/share/opencv4/haarcascades/haarcascade_frontalface_alt.xml" --nested-cascade="/usr/local/share/opencv4/haarcascades/haarcascade_eye_tree_eyeglasses.xml" --scale=1.3
      이 코드를 넣었더니

      ./facedetect: error while loading shared libraries: libopencv_objdetect.so.4.0: cannot open shared object file: No such file or directory
      이렇게 뜨네요...

      g++ -o facedetect /usr/local/share/opencv4/samples/cpp/facedetect.cpp $(pkg-config opencv4 --libs --cflags)
      이거 실행하고 했는데 말이죠..ㅠㅠ

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.04.26 09:42 신고

      아래처럼 해보았나요?

      webnautes@webnautes-pc:~/opencv/opencv-4.0.1/build$ sudo sh -c 'echo '/usr/local/lib' > /etc/ld.so.conf.d/opencv.conf'

      webnautes@webnautes-pc:~/opencv/opencv-4.0.1/build$ sudo ldconfig

    • sandoooo 2019.04.27 00:11

      헉 너무 잘되네요!

      빠뜨렸나봐요 ㅠㅠ 감사합니다!!

      유투브도 구독 누르고 잘 보고있습니다!

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.04.27 02:18 신고

      감사합니다 : )

  10. 라이칸 2019.07.08 14:02

    ~/opencv/opencv-4.0.1/build$ ./facedetect --cascade="/usr/local/share/opencv4/haarcascades/haarcascade_frontalface_alt.xml" --nested-cascade="/usr/local/share/opencv4/haarcascades/haarcascade_eye_tree_eyeglasses.xml" --scale=1.3

    (facedetect:3469): GStreamer-CRITICAL **: 14:00:40.670: gst_element_get_state: assertion 'GST_IS_ELEMENT (element)' failed
    VIDEOIO ERROR: V4L: can't open camera by index 0
    Capture from camera #0 didn't work

    이렇게 나오는데 어떻게하나요?

    참고로 버전
    Distributor ID: Ubuntu
    Description: Ubuntu 18.04.2 LTS
    Release: 18.04
    Codename: bionic

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.07.08 14:36 신고

      카메라 인식이 안된듯합니다.

      해당 카메라용 리눅스 디바이스 드라이버를 찾아보거나 다른 카메라로 교체해야 할듯합니다.

  11. Favicon of https://t4716.tistory.com BlogIcon 축구왕농구킹 2019.08.29 18:59 신고

    안녕하세요. python3을 사용하고 싶은데, 위와 같이 따라하는경우 2는 설치되고 3은 설치되지 않습니다.
    Found PythonInterp: /home/jin/anaconda3/bin/python3 (found suitable version "3.6.6", minimum required is "3.2")
    -- Could NOT find PythonLibs: Found unsuitable version "3.6.8", but required is exact version "3.6.6" (found /usr/lib/x86_64-linux-gnu/libpython3.6m.so)

    이런 에러가 발생하는데 어떻게 해야 3을 설치할 수 있나요? 삭제하고 직접 추가하라고 하신 부분을 같이 넣어야 할지요?

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.08.29 19:54 신고

      anaconda를 사용하지 않아서 정확할지 모르지만..

      anaconda에서 사용하는 파이썬 버전 OpenCV 파이썬용을 빌드하는데 사용한 파이썬의 버전이 달라서 생긴 문제로 보입니다.

      두 군데서 사용하는 파이썬의 버전을 일치시켜야 동작할 듯합니다.

  12. wnajsldkf 2020.02.19 21:38

    안녕하세요 python3 -c 'import cv2; print(cv2.__version__)' 실행하면
    Traceback (most recent call last):
    File "<string>", line 1, in <module>
    File "/usr/local/lib/python3.6/dist-packages/cv2/__init__.py", line 88, in <module>
    bootstrap()
    File "/usr/local/lib/python3.6/dist-packages/cv2/__init__.py", line 79, in bootstrap
    import cv2
    ImportError: libopencv_hdf.so.4.1: cannot open shared object file: No such file or directory
    나옵니다
    위에 나와있는 해결방법을 확인해보니 경로에있어야 할 파일들은 모두 있더라구요
    해결방법 있을까요??

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.02.20 08:30 신고

      cmake시 다음 옵션을 추가하여 hdf를 사용하지 않도록 해보세요.

      -DBUILD_opencv_hdf=OFF

    • wnajsldkf 2020.02.20 17:47

      다시 해봤는데 같은 오류가 발생했습니다. pkg-config --modversion opencv 로는 잘 나오는데 이유를 알 수 있을까요??

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.02.20 18:24 신고

      기존 build 디렉토리를 삭제하고 진행하셨나요?

    • Wnajsldkf 2020.02.21 19:55

      답장주셔서 감사합니다! 방금 확인해보니까 제 pc /usr/lib에 x86_64_linux-gnu 디렉토리가 없는게 문제인 것 같습니다.

    • Wnajsldkf 2020.02.21 20:12

      앗 계속 질문드려서 죄송합니다. 저는 현재 jetson nano에서 작업하고 있는데요 임베디드 플랫폼이라서 x86_64-linux-gnu가 아닌 aarch64-linux-gnu가 있는 것 같습니다. 감사합니다.

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.02.21 20:58 신고

      aarch64는 arm cpu에서 사용하는 것이고 x86_64-linux-gnu는 intel cpu에서 사용합니다.

      포스트는 PC기반 우분투를 기반으로 했는데

      작업하신 것은 PC가 아니라서 차이가 생긴듯합니다.

    • wnajsldkf 2020.02.21 21:20

      네!! 그래도 정말 도움 많이 받았습니다:) 친절한 답변 정말 감사드립니다

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.02.21 21:22 신고

      네 감사합니다~

  13. JUJU 2020.04.04 02:17

    안녕하세요 오류 수정하려고 검색하다가 포스팅 보게 되었습니다. 도움되는 글 올려주셔서 감사합니다.
    제가 해결하려고 했던 오류는
    Traceback (most recent call last):
    File "simpleCamTest.py", line 2, in <module>
    import cv2
    ImportError: libopencv_reg.so.3.4: cannot open shared object file: No such file or directory
    이 오류 인데,
    작성자님께서 본문에 이 문제는 cv2.so를 복사해줘야 한다고 말씀하셔서 복사를 했는데
    제가 하던 과정이랑 뭐가 안맞았는지
    cp: cannot stat '/usr/local/python/cv2/python-2.7/cv2.so': 그런 파일이나 디렉터리가 없습니다
    이런 오류가 뜨더라구요ㅠㅠ
    그래서 CMAKE를 사용하려고 본문을 붙여넣기 했는데 bash: cmake: command not found 이런 오류가 뜨더라구요ㅠㅠ
    제 오류인
    Traceback (most recent call last):
    File "simpleCamTest.py", line 2, in <module>
    import cv2
    ImportError: libopencv_reg.so.3.4: cannot open shared object file: No such file or directory
    이 문제는 어떻게 해결해야 할지 여쭤보고 싶습니다ㅠㅠ

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.04.04 07:28 신고

      링크처럼 해보세요

      https://github.com/cggos/dip_cvqt/issues/1#issuecomment-284103343

  14. Favicon of https://hiwony.tistory.com BlogIcon Godwony 2020.04.07 09:47 신고

    감사합니다.
    ubuntu 18.04 환경에 막힘없이 잘 설치 했습니다.

  15. 오늘opencv입문 2020.04.07 12:10

    안녕하세요 작성자님, 이제막 우분투 상에서의 opencv에 입문해서 이것저것 해보려고 하는 중입니다. 다름이 아니라 적혀있는 대로 실행했더니 카메라는 잘 나옵니다. 그런데 아래와 같은 오류들이 발생하였는데, 어찌 해야 할 지 몰라 문의드립니다. 혹여나 답변 주신다면 정말 감사드리겠습니다!

    face detection using haar cascades

    USAGE:
    facedetect.py [--cascade <cascade_fn>] [--nested-cascade <cascade_fn>] [<video_source>]

    [ WARN:0] global /home/cjj/opencv/opencv-4.2.0/modules/core/src/utils/samples.cpp (59) findFile cv::samples::findFile('samples/data/lena.jpg') => '/usr/local/lib/../share/opencv4/samples/data/lena.jpg'
    [ WARN:0] global /home/cjj/opencv/opencv-4.2.0/modules/videoio/src/cap_gstreamer.cpp (1759) handleMessage OpenCV | GStreamer warning: Embedded video playback halted; module source reported: Could not read from resource.
    [ WARN:0] global /home/cjj/opencv/opencv-4.2.0/modules/videoio/src/cap_gstreamer.cpp (888) open OpenCV | GStreamer warning: unable to start pipeline
    [ WARN:0] global /home/cjj/opencv/opencv-4.2.0/modules/videoio/src/cap_gstreamer.cpp (480) isPipelinePlaying OpenCV | GStreamer warning: GStreamer: pipeline have not been created
    Gtk-Message: 11:53:42.149: Failed to load module "canberra-gtk-module"
    ^CTraceback (most recent call last):
    File "/usr/local/share/opencv4/samples/python/facedetect.py", line 78, in <module>
    main()
    File "/usr/local/share/opencv4/samples/python/facedetect.py", line 70, in main
    if cv.waitKey(5) == 27:

  16. 오늘opencv입문 2020.04.07 19:05

    시간내 답변해주셔서 정말 감사드립니다!,

+ Recent posts