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





1. 설치된 OpenCV 제거


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


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


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


5. OpenCV 설치 결과 확인

   5.1. C/C++

   5.2. Python





1. 설치된 OpenCV 제거

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


아래처럼 보이면 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



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

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

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



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 libjasper-dev libpng12-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를 선택해서 사용가능합니다.  

여기서는 qt4를 지정해주었습니다. QImage와 Mat 간의 변환에는 영향을 주지 않습니다.

 

$ sudo apt-get install libqt4-dev

 

 

 

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

$ sudo apt-get install mesa-utils libgl1-mesa-dri libqt4-opengl-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.0.1 소스코드를 다운로드 받아 압축을 풀어줍니다.

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




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

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


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




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


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




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

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


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




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


OpenCV 4.0.1에서 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=ON \
-D WITH_GTK=OFF \
-D WITH_OPENGL=ON \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.0.1/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.0.1/build




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


-- General configuration for OpenCV 4.0.1 =====================================
--   Version control:               unknown
--
--   Extra modules:
--     Location (extra):            /home/webnautes/opencv/opencv_contrib-4.0.1/modules
--     Version control (extra):     unknown
--
--   Platform:
--     Timestamp:                   2019-01-17T23:01:16Z
--     Host:                      Linux 4.15.0-29-generic x86_64
--     CMake:                      3.5.1
--     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 (5 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 (11 files):           + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2
--       AVX512_SKX (1 files):      + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2 AVX_512F AVX512_SKX
--
--   C/C++:
--     Built as dynamic libs?:      YES
--     C++ Compiler:                /usr/bin/c++ (ver 5.4.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 -Wno-narrowing -Wno-delete-non-virtual-dtor -Wno-comment -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 -Wno-narrowing -Wno-delete-non-virtual-dtor -Wno-comment -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-narrowing -Wno-comment -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-narrowing -Wno-comment -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):      
--     Linker flags (Debug):        
--     ccache:                      NO
--     Precompiled headers:         YES
--     Extra dependencies:          dl m pthread rt
--     3rdparty dependencies:
--
--   OpenCV modules:
--     To be built:                 aruco bgsegm bioinspired calib3d ccalib core datasets dnn dnn_objdetect dpm face features2d flann fuzzy gapi hfs highgui img_hash imgcodecs imgproc java_bindings_generator line_descriptor ml objdetect optflow phase_unwrapping photo plot python2 python3 python_bindings_generator 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 freetype hdf java js matlab ovis sfm ts viz
--     Applications:                apps
--     Documentation:               NO
--     Non-free algorithms:         NO
--
--   GUI:
--     GTK+:                      NO
--     OpenGL support:              NO
--     VTK support:                 NO
--
--   Media I/O:
--     ZLib:                      /usr/lib/x86_64-linux-gnu/libz.so (ver 1.2.8)
--     JPEG:                      /usr/lib/x86_64-linux-gnu/libjpeg.so (ver 80)
--     WEBP:                      build (ver encoder: 0x020e)
--     PNG:                      /usr/lib/x86_64-linux-gnu/libpng.so (ver 1.2.54)
--     TIFF:                      /usr/lib/x86_64-linux-gnu/libtiff.so (ver 42 / 4.0.6)
--     JPEG 2000:                   /usr/lib/x86_64-linux-gnu/libjasper.so (ver 1.900.1)
--     OpenEXR:                     build (ver 1.7.1)
--     HDR:                      YES
--     SUNRASTER:                   YES
--     PXM:                      YES
--     PFM:                      YES
--
--   Video I/O:
--     FFMPEG:                      YES
--       avcodec:                  YES (ver 56.60.100)
--       avformat:                  YES (ver 56.40.101)
--       avutil:                  YES (ver 54.31.100)
--       swscale:                  YES (ver 3.1.101)
--       avresample:                NO
--     GStreamer:                   
--       base:                  YES (ver 1.8.3)
--       video:                  YES (ver 1.8.3)
--       app:                  YES (ver 1.8.3)
--       riff:                  YES (ver 1.8.3)
--       pbutils:                  YES (ver 1.8.3)
--     v4l/v4l2:                    linux/videodev2.h
--     Xine:                      YES (ver 1.2.6)
--
--   Parallel framework:            pthreads
--
--   Trace:                         YES (with Intel ITT)
--
--   Other third-party libraries:
--     Lapack:                      NO
--     Eigen:                      YES (ver 3.2.92)
--     Custom HAL:                  NO
--     Protobuf:                    build (3.5.1)
--
--   OpenCL:                        YES (no extra features)
--     Include path:                /home/webnautes/opencv/opencv-4.0.1/3rdparty/include/opencl/1.2
--     Link libraries:              Dynamic load
--
--   Python 2:
--     Interpreter:                 /usr/bin/python2.7 (ver 2.7.12)
--     Libraries:                   /usr/lib/x86_64-linux-gnu/libpython2.7.so (ver 2.7.12)
--     numpy:                      /usr/lib/python2.7/dist-packages/numpy/core/include (ver 1.11.0)
--     install path:                lib/python2.7/dist-packages/cv2/python-2.7
--
--   Python 3:
--     Interpreter:                 /usr/bin/python3 (ver 3.5.2)
--     Libraries:                   /usr/lib/x86_64-linux-gnu/libpython3.5m.so (ver 3.5.2)
--     numpy:                      /usr/lib/python3/dist-packages/numpy/core/include (ver 1.11.0)
--     install path:                lib/python3.5/dist-packages/cv2/python-3.5
--
--   Python (for build):            /usr/bin/python2.7
--
--   Java:                          
--     ant:                      NO
--     JNI:                      NO
--     Java wrappers:               NO
--     Java tests:                  NO
--
--   Install to:                    /usr/local
-- -----------------------------------------------------------------





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


--   Python 2:

--     Interpreter:                 /usr/bin/python2.7 (ver 2.7.12)

--     Libraries:                   /usr/lib/x86_64-linux-gnu/libpython2.7.so (ver 2.7.12)

--     numpy:                      /usr/lib/python2.7/dist-packages/numpy/core/include (ver 1.11.0)

--     install path:                lib/python2.7/dist-packages/cv2/python-2.7

--

--   Python 3:

--     Interpreter:                 /usr/bin/python3 (ver 3.5.2)

--     Libraries:                   /usr/lib/x86_64-linux-gnu/libpython3.5m.so (ver 3.5.2)

--     numpy:                      /usr/lib/python3/dist-packages/numpy/core/include (ver 1.11.0)

--     install path:                lib/python3.5/dist-packages/cv2/python-3.5

--

--   Python (for build):            /usr/bin/python2.7




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


$ 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=ON \

-D WITH_GTK=OFF \

-D WITH_OPENGL=ON \

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

-D WITH_V4L=ON  \

-D WITH_FFMPEG=ON \

-D WITH_XINE=ON \

-D BUILD_NEW_PYTHON_SUPPORT=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.5m \

-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.5m.so \

../




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


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




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

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


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



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


[100%] Built target opencv_stitching

Scanning dependencies of target opencv_python2

Scanning dependencies of target opencv_python3

[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

[100%] Linking CXX shared module ../../lib/cv2.so

[100%] Linking CXX shared module ../../lib/python3/cv2.cpython-36m-x86_64-linux-gnu.so

[100%] Built target opencv_python2

[100%] Built target opencv_python3


real 13m36.700s

user 41m52.880s

sys 1m50.322s

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



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



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

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



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


webnautes@webnautes-pc:~/opencv/opencv-4.0.1/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

# Legacy biarch compatibility support

/lib32

/usr/lib32




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


webnautes@webnautes-pc:~/opencv/opencv-4.0.1/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 4.0.1에서 pkg-config를 디폴트로 지원하지 않습니다.

그래서 CMake를 사용해서 컴파일 해야 합니다.


opencv대신에 opencv4를 사용하면 pkg-config를 사용하여 컴파일할 수 있습니다.

OpenCV 4.0.1 에선 -std=c++11을 붙여줘야 합니다.


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



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

$ ./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.0.1/build$ python
Python 2.7.15rc1 (default, Apr 15 2018, 21:51:34)

[GCC 7.3.0] on linux2

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

>>> import cv2

>>> cv2.__version__

'4.0.1'

>>>



webnautes@webnautes-pc:~/opencv/opencv-4.0.1/build$ python3
Python 3.6.5 (default, Apr  1 2018, 05:46:30)

[GCC 7.3.0] on linux

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

>>> import cv2

>>> cv2.__version__

'4.0.1'

>>>




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.0.1/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.0.1/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.0.1/build$ cd
webnautes@webnautes-pc:~$ rm -rf opencv




마지막 업데이트 2019. 1. 18



해봤어요 www.facebook.com/webnautes/
진행하다가 문제 생기면 사소한 것이라도 댓글로 남겨주시면 감사하겠습니다.

  1. 이전 댓글 더보기
  2. answer 2018.07.24 23:14 신고

    선생님 안녕하세요... 에러가 나는데 도저히 해결하지 못하고 있어서 이렇게 질문드립니다.

    개발환경 셋팅은 아래와 같습니다.

    cuda 9.0, cuDNN 7.x anaconda python 3.6 ubuntu 16.04

    에러가 나는 코드와 에러는 아래와 같습니다.

    에러 발생 코드:
    $ g++ -o facedetect facedetect.cpp $(pkg-config --libs --cflags opencv)

    에러 메시지:
    /usr/bin/ld: warning: libicui18n.so.58, needed by //home/caitech/anaconda3/lib/libQt5Core.so.5, not found (try using -rpath or -rpath-link)
    /usr/bin/ld: warning: libicuuc.so.58, needed by //home/caitech/anaconda3/lib/libQt5Core.so.5, not found (try using -rpath or -rpath-link)
    /usr/bin/ld: warning: libicudata.so.58, needed by //home/caitech/anaconda3/lib/libQt5Core.so.5, not found (try using -rpath or -rpath-link)
    //home/caitech/anaconda3/lib/libQt5Core.so.5: undefined reference to `u_errorName_58'
    //home/caitech/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucal_setMillis_58'
    //home/caitech/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucnv_getAlias_58'
    //home/caitech/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucal_inDaylightTime_58'
    //home/caitech/anaconda3/lib/libQt5Core.so.5: undefined reference to `u_strToLower_58'
    //home/caitech/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucnv_getStandardName_58'
    //home/caitech/anaconda3/lib/libQt5Core.so.5: undefined reference to `u_strToUpper_58'
    //home/caitech/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucnv_setSubstChars_58'
    //home/caitech/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucnv_getMaxCharSize_58'
    //home/caitech/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucal_getTimeZoneDisplayName_58'
    //home/caitech/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucnv_fromUnicode_58'
    //home/caitech/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucnv_open_58'
    //home/caitech/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucnv_getDefaultName_58'
    //home/caitech/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucal_getDefaultTimeZone_58'
    //home/caitech/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucal_clone_58'
    //home/caitech/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucal_getDSTSavings_58'
    //home/caitech/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucol_strcoll_58'
    //home/caitech/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucnv_close_58'
    //home/caitech/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucnv_countAvailable_58'
    //home/caitech/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucal_openCountryTimeZones_58'
    //home/caitech/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucol_open_58'
    //home/caitech/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucnv_compareNames_58'
    //home/caitech/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucal_close_58'
    //home/caitech/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucnv_getAvailableName_58'
    //home/caitech/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucal_openTimeZoneIDEnumeration_58'
    //home/caitech/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucal_open_58'
    //home/caitech/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucol_setAttribute_58'
    //home/caitech/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucal_openTimeZones_58'
    //home/caitech/anaconda3/lib/libQt5Core.so.5: undefined reference to `uenum_close_58'
    //home/caitech/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucnv_countAliases_58'
    //home/caitech/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucol_close_58'
    //home/caitech/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucol_getSortKey_58'
    //home/caitech/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucal_get_58'
    //home/caitech/anaconda3/lib/libQt5Core.so.5: undefined reference to `uenum_next_58'
    //home/caitech/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucnv_toUnicode_58'
    collect2: error: ld returned 1 exit status

    제 추측으로는 cmake의 결과로 python3에 관한 항목이 전혀 나오지 않았는데 그냥 진행한 것이 문제일 것 같다는 생각이 드는데...
    혹시 해결책 생각 나시는게 있으시면 정중히 의견 여쭙겠습니다... 감사합니다.

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

      cmake 대신에 cmake-gui를 사용하면 anaconda관련 경로들이 인식된다는데.. 테스트 환경이 안되서 못해봤네요..

      자세한 내용은 아래 링크를 확인해보세요.
      https://askubuntu.com/questions/1011636/opencv-undefined-references-for-libqt5core-so-5

  3. CB 2018.07.26 15:16 신고

    안녕하세요 포스팅 잘 보았습니다. 설치중 cmake 단계에서 python3 관련한 내용이 출력되지 않는 오류가 발생하여 질문을 드립니다.

    저는 아무것도 설치하지 않은 우분투 16.04 버전에서 anaconda 4.5.8, cuda toolkit 8.0, cudnn 6 만 설치한 상태로 진행하였구요

    -D PYTHON3_PACKAGES_PATH=/usr/lib/python3.5/dist-packages
    에 해당하는 폴더가 존재하지 않아서
    제가 생성한 아나콘다 가상환경 폴더에서
    /home/cb/anaconda3/envs/python35/lib/python3.5/site-packages
    폴더를
    /usr/lib/python3.5/
    위치에 복사하고
    -D PYTHON3_PACKAGES_PATH=/usr/lib/python3.5/site-packages
    로 수정해서 실행하였는데, 컴파일 결과물을 보면

    -- Python 2:
    -- Interpreter: /usr/bin/python2.7 (ver 2.7.12)
    -- Libraries: /usr/lib/x86_64-linux-gnu/libpython2.7.so (ver 2.7.12)
    -- numpy: /usr/lib/python2.7/dist-packages/numpy/core/include (ver 1.11.0)
    -- packages path: /usr/lib/python2.7/dist-packages
    --
    -- Python (for build): /usr/bin/python2.7
    --
    -- Java:
    -- ant: NO
    -- JNI: NO
    -- Java wrappers: NO
    -- Java tests: NO
    --
    -- Matlab: NO
    --
    -- Install to: /usr/local

    이런 식으로 python3 에 대한 내용은 출력되지 않습니다.

    선생님께서 다른 분들께 답변 달아주신 내용들을 참고해서, 제 나름대로 해결해보려 하였으나 여기서 막혔네요. 도와주실 수 있을까요?

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes webnautes 2018.07.26 16:52 신고

      아직해보지는 못했는데 다음 옵션들을 cmake에 추가해서 해보세요..

      -DCMAKE_INSTALL_PREFIX=$(python -c "import sys; print(sys.prefix)") -DPYTHON3_EXECUTABLE=$(which python) -DPYTHON3_INCLUDE_DIR=$(python -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") -DPYTHON3_PACKAGES_PATH=$(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")


      다음 사이트에 나오는 내용입니다.
      https://www.scivision.co/anaconda-python-opencv3/

  4. 쩜쩜쩜 2018.08.07 19:31 신고

    [ 64%] Linking CXX shared library ../../lib/libopencv_videoio.so
    [ 64%] Built target opencv_videoio
    [ 64%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/softmax_layer.cpp.o
    [ 64%] Generating qrc_window_QT.cxx
    [ 65%] Generating src/moc_window_QT.cxx
    moc: Cannot open options file specified with @
    Usage: moc [options] <header-file>
    -o<file> write output to file rather than stdout
    -I<dir> add dir to the include path for header files
    -E preprocess only; do not generate meta object code
    -D<macro>[=<def>] define macro, with optional definition
    -U<macro> undefine macro
    -i do not generate an #include statement
    -p<path> path prefix for included file
    -f[<file>] force #include, optional file name
    -nn do not display notes
    -nw do not display warnings
    @<file> read additional options from file
    -v display version of moc
    modules/highgui/CMakeFiles/opencv_highgui.dir/build.make:62: recipe for target 'modules/highgui/src/moc_window_QT.cxx' failed
    make[2]: *** [modules/highgui/src/moc_window_QT.cxx] Error 1
    CMakeFiles/Makefile2:4916: recipe for target 'modules/highgui/CMakeFiles/opencv_highgui.dir/all' failed
    make[1]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/all] Error 2
    make[1]: *** Waiting for unfinished jobs....

    (중략)

    [ 68%] Linking CXX shared library ../../lib/libopencv_dnn.so
    [ 68%] Built target opencv_dnn
    Makefile:160: recipe for target 'all' failed
    make: *** [all] Error 2


    자꾸 이 에러가 뜨면서 컴파일이 멈춥니다. 어떻게 해결해야 할까요?ㅠㅠ

  5. opencvQT 2018.08.31 17:37 신고

    g++ -o facedetect facedetect.cpp $(pkg-config --libs --cflags opencv) 명령어 실행 과정에서

    /usr/bin/ld: warning: libicui18n.so.56, needed by //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5, not found (try using -rpath or -rpath-link)
    /usr/bin/ld: warning: libicuuc.so.56, needed by //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5, not found (try using -rpath or -rpath-link)
    /usr/bin/ld: warning: libicudata.so.56, needed by //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5, not found (try using -rpath or -rpath-link)
    //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5: undefined reference to `u_strToLower_56'
    //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5: undefined reference to `ucnv_getStandardName_56'
    //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5: undefined reference to `ucnv_getAlias_56'
    //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5: undefined reference to `uenum_next_56'
    //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5: undefined reference to `u_strToUpper_56'
    //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5: undefined reference to `ucnv_setSubstChars_56'
    //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5: undefined reference to `ucal_getTimeZoneDisplayName_56'
    //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5: undefined reference to `ucnv_fromUnicode_56'
    //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5: undefined reference to `u_errorName_56'
    //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5: undefined reference to `uenum_close_56'
    //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5: undefined reference to `ucal_getDSTSavings_56'
    //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5: undefined reference to `ucal_openTimeZoneIDEnumeration_56'
    //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5: undefined reference to `ucal_setMillis_56'
    //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5: undefined reference to `ucol_close_56'
    //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5: undefined reference to `ucol_getSortKey_56'
    //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5: undefined reference to `ucal_get_56'
    //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5: undefined reference to `ucol_open_56'
    //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5: undefined reference to `ucnv_compareNames_56'
    //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5: undefined reference to `ucal_clone_56'
    //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5: undefined reference to `ucal_open_56'
    //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5: undefined reference to `ucol_setAttribute_56'
    //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5: undefined reference to `ucal_openCountryTimeZones_56'
    //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5: undefined reference to `ucnv_open_56'
    //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5: undefined reference to `ucal_openTimeZones_56'
    //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5: undefined reference to `ucnv_countAliases_56'
    //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5: undefined reference to `ucal_inDaylightTime_56'
    //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5: undefined reference to `ucal_close_56'
    //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5: undefined reference to `ucnv_getAvailableName_56'
    //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5: undefined reference to `ucnv_getDefaultName_56'
    //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5: undefined reference to `ucal_getDefaultTimeZone_56'
    //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5: undefined reference to `ucnv_toUnicode_56'
    //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5: undefined reference to `ucol_strcoll_56'
    //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5: undefined reference to `ucnv_close_56'
    //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5: undefined reference to `ucnv_getMaxCharSize_56'
    //home/soo/Qt5.10.0/5.10.0/gcc_64/lib/libQt5Core.so.5: undefined reference to `ucnv_countAvailable_56'
    collect2: error: ld returned 1 exit status
    다음과 같은 에러가 발생했습니다.

    작성자님이 올려주신 내용과 비교하였을 때 다른 내용은 QT 버젼 외엔 없었습니다.
    (QT Creator를 사용할 일이 있어 5.1을 사용중입니다.)
    -- GUI:
    -- QT: YES (ver 5.10.0)
    -- QT OpenGL support: YES (Qt5::OpenGL 5.10.0)
    -- GTK+: NO
    -- OpenGL support: YES (/usr/lib/x86_64-linux-gnu/libGLU.so /usr/lib/x86_64-linux-gnu/libGL.so)

    이 글을 보며 여러번 opencv를 설치해 보았지만, QT Creator를 먼저 설치 한 후 opencv를 설치해본 적이 처음이라
    QT 버젼에 문제가 있다고 생각이 듭니다.

    꼭 부탁드립니다 ㅠㅠ

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes webnautes 2018.08.31 17:50 신고

      라이브러리 패스가 등록되지 않아서 그런듯합니다.

      다음 링크대로 등록해주세요..

      https://stackoverflow.com/a/40327731

  6. KHJ 2018.09.06 16:50 신고

    질문이 있습니다.

    위 과정을 차례대로 진행 하였고 무난하게 성공하였는데

    /usr/local/share/OpenCV/samples/ 경로에 python 만 있고, 사진처럼 다양한 예제들이 존재하질 않습니다.

    어떻게 해야 하나요 ?

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes webnautes 2018.09.06 17:10 신고

      컴파일시 사용한 소스코드 OpenCV 폴더안에 samples 폴더가 존재합니다.

    • KHJ 2018.09.06 19:19 신고

      아 감사합니다. 이번엔 예제를 실행 해봤는데 아래와 같은 오류가 나타납니다.

      rhkrgudwh@ubuntu:~/opencv/opencv-3.4.0/samples/cpp$ ./facedetect --cascade="/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml" --nested-cascade="/usr/local/share/OpenCV/haarcascades/haarcascade_eye_tree_eyeglasses.xml " --scale=1.3
      Video capturing has been started ...
      select timeout
      select timeout
      OpenCV Error: Assertion failed (total() == 0 || data != __null) in Mat, file /home/rhkrgudwh/opencv/opencv-3.4.0/modules/core/include/opencv2/core/mat.inl.hpp, line 500
      terminate called after throwing an instance of 'cv::Exception'
      what(): /home/rhkrgudwh/opencv/opencv-3.4.0/modules/core/include/opencv2/core/mat.inl.hpp:500: error: (-215) total() == 0 || data != __null in function Mat

      Aborted (core dumped)

      웹캠 연결도 확인 했는데 무슨 문제일까요 .. ?

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes webnautes 2018.09.06 22:44 신고

      CPP 예제도 실행시켜 보세요...
      웹캠을 바꾸어 볼 필요도 있는 듯합니다.

    • KHJ 2018.09.09 18:22 신고

      선생님 블로그의 "OpenCV 3.x 예제 - 웹캠에서 캡처한 영상을 동영상 파일로 저장하기" 코드를 따라 해봤는데,
      다른 코드도 그렇고 select tiemout 오류가 뜨면서 안됩니다.ㅠ

      카메라 자체에 문제가 있을까 싶어서 로지텍 사이트에서 카메라를 실행시키는 소프트웨어를 다운받아 해보았는데 잘 됩니다.

      현재 실행환경이 vmware의 우분투 환경인데 Cheese를 실행시켜도 검은 화면만 나오고 있습니다.

      혹시 이 문제에 대한 해결방법도 아시는지요 ..

  7. 왜안대징 2018.09.09 12:32 신고

    [ 63%] Generating src/moc_window_QT.cxx
    moc: Cannot open options file specified with @
    Usage: moc [options] <header-file>
    -o<file> write output to file rather than stdout
    -I<dir> add dir to the include path for header files
    -E preprocess only; do not generate meta object code
    -D<macro>[=<def>] define macro, with optional definition
    -U<macro> undefine macro
    -i do not generate an #include statement
    -p<path> path prefix for included file
    -f[<file>] force #include, optional file name
    -nn do not display notes
    -nw do not display warnings
    @<file> read additional options from file
    -v display version of moc
    modules/highgui/CMakeFiles/opencv_highgui.dir/build.make:62: recipe for target 'modules/highgui/src/moc_window_QT.cxx' failed
    make[2]: *** [modules/highgui/src/moc_window_QT.cxx] Error 1
    CMakeFiles/Makefile2:4673: recipe for target 'modules/highgui/CMakeFiles/opencv_highgui.dir/all' failed
    make[1]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/all] Error 2
    make[1]: *** Waiting for unfinished jobs....
    이렇게 오류가뜨고
    아래 이런오류가 또뜹니다.
    [ 67%] Built target opencv_dnn
    Makefile:160: recipe for target 'all' failed
    make: *** [all] Error 2

    그다음 cmake install. 하면
    [ 63%] Generating src/moc_window_QT.cxx
    moc: Cannot open options file specified with @
    Usage: moc [options] <header-file>
    -o<file> write output to file rather than stdout
    -I<dir> add dir to the include path for header files
    -E preprocess only; do not generate meta object code
    -D<macro>[=<def>] define macro, with optional definition
    -U<macro> undefine macro
    -i do not generate an #include statement
    -p<path> path prefix for included file
    -f[<file>] force #include, optional file name
    -nn do not display notes
    -nw do not display warnings
    @<file> read additional options from file
    -v display version of moc
    modules/highgui/CMakeFiles/opencv_highgui.dir/build.make:62: recipe for target 'modules/highgui/src/moc_window_QT.cxx' failed
    make[2]: *** [modules/highgui/src/moc_window_QT.cxx] Error 1
    CMakeFiles/Makefile2:4673: recipe for target 'modules/highgui/CMakeFiles/opencv_highgui.dir/all' failed
    make[1]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/all] Error 2
    Makefile:160: recipe for target 'all' failed
    make: *** [all] Error 2
    다시 이런오류가 뜨는데
    해결방법좀 알려주시면 감사합니다요 ㅠㅠㅠㅠㅠㅠㅠㅠㅠ

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes webnautes 2018.09.09 15:41 신고

      에러가 발생한 Qt 대신에 Gtk를 사용하도록 해보세요.

      우선 다음 패키지들을 설치해줍니다.

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


      cmake 실행시 다음 옵션을 변경합니다.

      변경 전
      -D WITH_QT=ON \

      변경 후
      -D WITH_QT=OFF \
      -D WITH_GTK=ON \

  8. 짧은한줄 2018.09.16 23:13 신고

    혹시 저와 같은 분이 계실까 하여 댓글로 남깁니다.
    g++ -o facedetect facedetect.cpp $(pkg-config --libs --cflags opencv) 실행시
    /usr/bin/ld: warning: libicui18n.so.56, needed by //media/ark/sub/ProgramFiles/Qt/5.10.0/gcc_64/lib/libQt5Core.so.5, not found (try using -rpath or -rpath-link)
    /usr/bin/ld: warning: libicuuc.so.56, needed by //media/ark/sub/ProgramFiles/Qt/5.10.0/gcc_64/lib/libQt5Core.so.5, not found (try using -rpath or -rpath-link)
    /usr/bin/ld: warning: libicudata.so.56, needed by //media/ark/sub/ProgramFiles/Qt/5.10.0/gcc_64/lib/libQt5Core.so.5, not found (try using -rpath or -rpath-link)
    //media/ark/sub/ProgramFiles/Qt/5.10.0/gcc_64/lib/libQt5Core.so.5: undefined reference to `u_strToLower_56'
    //media/ark/sub/ProgramFiles/Qt/5.10.0/gcc_64/lib/libQt5Core.so.5: undefined reference to `ucnv_getStandardName_56'
    식으로 에러 메시지를 뜨는 경우.

    Qt path를 변경또는 추가합니다.

    운영자님이 댓글에 https://stackoverflow.com/questions/29455836/linkage-against-libqt5core/40327731#40327731
    추가해주셨는데 Qt가 설치된 경로(개인PC마다 다 다른데 제경우는 /media/ark/sub/ProgramFiles/Qt/5.10.0/gcc_64/lib 였습니다)를 추가해주시면 컴파일 에러는 해결됩니다.
    실행시 추가되는 옵션에 대한 설명두 남겨 보고 싶었는데 아직 몰라서 나중에 찾아봐야 겠네요 ㅠㅠ

    ps. 처음 접하실때 저와 같이 단순하게 복붙을 한번 해보고 오류 뜨시는 분이 계실까봐서 남겨봅니다.

  9. plzhelpme 2018.10.10 16:50 신고

    포스팅에 있는 그대로 따라해서 make 까지 진행했습니다.

    그런데 26%쯤에서
    In file included from /home/sanghun/opencv/opencv-3.4.0/modules/stitching/include/opencv2/stitching.hpp:49:0,
    from /home/sanghun/opencv/opencv-3.4.0/modules/stitching/src/precomp.hpp:59,
    from /home/sanghun/opencv/opencv-3.4.0/build/modules/stitching/opencv_stitching_pch_dephelp.cxx:1:
    /home/sanghun/opencv/opencv-3.4.0/modules/stitching/include/opencv2/stitching/detail/matchers.hpp:52:42: fatal error: opencv2/xfeatures2d/cuda.hpp: No such file or directory
    compilation terminated.
    modules/stitching/CMakeFiles/opencv_stitching_pch_dephelp.dir/build.make:62: recipe for target 'modules/stitching/CMakeFiles/opencv_stitching_pch_dephelp.dir/opencv_stitching_pch_dephelp.cxx.o' failed
    make[2]: *** [modules/stitching/CMakeFiles/opencv_stitching_pch_dephelp.dir/opencv_stitching_pch_dephelp.cxx.o] Error 1
    CMakeFiles/Makefile2:7780: recipe for target 'modules/stitching/CMakeFiles/opencv_stitching_pch_dephelp.dir/all' failed
    make[1]: *** [modules/stitching/CMakeFiles/opencv_stitching_pch_dephelp.dir/all] Error 2
    make[1]: *** Waiting for unfinished jobs....
    ...
    Makefile:162: recipe for target 'all' failed
    make: *** [all] Error 2
    이렇게 종료됩니다.

    해결방법이 있을까요?

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes webnautes 2018.10.10 19:23 신고

      CUDA 옵션이 활성화되서 에러가 났네요.

      다음처럼 끄는 옵션을 추가하여 진행하세요.

      -D WITH_CUDA=OFF

    • plzhelpme 2018.10.19 13:31 신고

      그거 추가해서 cmake 해도 같은 에러가 발생합니다.
      대신에 cmake -DBUILD_opencv_xfeatures2d=OFF... 을 추가하면 에러는 안나네요. 그런데 나중에 사용하다가 어떤 에러가 발생할 수도 있을까요?

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes webnautes 2018.10.19 14:05 신고

      해당 모듈에서 제공하는 함수를 사용할수 없을듯합니다.

  10. 다됨 2018.10.11 17:49 신고

    넘넘 고맙다냥!

  11. 감사합니다 2018.10.21 21:21 신고

    이렇게 잘 정리 해주셔서 감사합니다. 그런데 혹시 파이썬 3.6버전을 사용할 때 경로 설정을 위해 어떻게 컴파일하는지 알려주실 수 있으신가요?

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes webnautes 2018.10.21 23:26 신고

      감사합니다..


      우분투 18.04를 위한 다음 포스팅의 cmake 실행결과에서 Python 3.6을 위한 경로를 참고하면 될듯합니다.

      http://webnautes.tistory.com/1186

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes webnautes 2018.10.21 23:56 신고

      포스팅에서 아래 부분에 경로를 입력해주면 됩니다.


      붉은색 줄처럼 해당 경로들을 직접 적어줘야 합니다.

  12. 오픈페이스 2019.01.02 17:15 신고

    안녕하세요 다름이아니라 이것저것 방법을 다써봤는데도 오류가 그대로라 혹시 어떻게 해결할지 문의 남깁니다 ㅠ

    Scanning dependencies of target opencv_python2
    [ 97%] Building CXX object modules/python2/CMakeFiles/opencv_python2.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/python2/CMakeFiles/opencv_python2.dir/build.make:62: recipe for target 'modules/python2/CMakeFiles/opencv_python2.dir/__/src2/cv2.cpp.o' failed
    make[2]: *** [modules/python2/CMakeFiles/opencv_python2.dir/__/src2/cv2.cpp.o] Error 4
    CMakeFiles/Makefile2:8033: recipe for target 'modules/python2/CMakeFiles/opencv_python2.dir/all' failed
    make[1]: *** [modules/python2/CMakeFiles/opencv_python2.dir/all] Error 2
    Makefile:162: recipe for target 'all' failed
    make: *** [all] Error 2
    이런식으로 오류가 뜨는데 해결방안 혹시 아시는지 여쭈어봅니다.

  13. ubb3 2019.01.25 08:30 신고

    안녕하세요. 예전에 이 게시물이 OpenCV3.4.0으로 되어 있으셨는데요.

    4.0.1로 업데이트 되어 있네요. 혹시 업데이트 하신 이유가 있으신지 궁금합니다.


    • Favicon of https://webnautes.tistory.com BlogIcon webnautes webnautes 2019.01.25 08:34 신고

      최신버전 나오면 업데이트를 해왔습니다.

      현재 우분투 18.04를 사용중이라 우분투 16.04에 대한 업데이트가 늦었네요.

  14. 2019.02.16 19:20

    비밀댓글입니다

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes webnautes 2019.02.16 19:23 신고

      컴파일해서 C++용 OpenCV와 Python용 OpenCV를 설치합니다. 차이는 Extra module 포함여부입이다.

      파이썬만 필요하다면 pip install opencv-contrib-python으로 설치가능합니다

  15. Favicon of https://1chuu.tistory.com BlogIcon [철이] 2019.02.16 19:23 신고

    pip install opencv-python
    이랑은 어떻게 다른건가요?

  16. Favicon of https://1chuu.tistory.com BlogIcon [철이] 2019.02.16 20:03 신고

    아하!! 그럼 yolo가 c++ 이니까 yolo를 돌리려면 위 게시물처럼 설치를 해야되는거겠죠?

  17. Favicon of https://1chuu.tistory.com BlogIcon [철이] 2019.02.16 20:18 신고

    ~/opencv/opencv-4.0.1/build sudo ldconfig 했는데
    /sbin/ldconfig.real: /usr/local/cuda-9.0/targets/x86_64-linux/lib/libcudnn.so.7 is not a symbolic link
    혹시 이렇게 뜨는거 어떻게 해결하는지 아시나요?

  18. Favicon of https://1chuu.tistory.com BlogIcon [철이] 2019.02.16 20:59 신고

    설치시에 말씀이세요?
    cuda를 사용하게 어떻게 설정해주어야되나요?

  19. Favicon of https://1chuu.tistory.com BlogIcon [철이] 2019.02.16 21:20 신고

    http://queirozf.com/entries/installing-cuda-tk-and-tensorflow-on-a-clean-ubuntu-16-04-install

    위 링크 참고하여

    /usr/local/cuda/lib64$ sudo rm libcudnn.so
    /usr/local/cuda/lib64$ sudo rm libcudnn.so.5
    /usr/local/cuda/lib64$ sudo ln libcudnn.so.5.1.5 libcudnn.so.5
    /usr/local/cuda/lib64$ sudo ln libcudnn.so.5 libcudnn.so

    이런식으로 해서 해결했습니다
    혹시 다른분들에게 도움될까 댓글남깁니다

    많이 도움되는 게시물이었습니다.
    정말 감사합니다 선생님!

  20. 학생입니다 2019.03.28 13:59 신고

    안녕하세요 위에 나온대로 에러없이 다 설치를 하였는데 파이썬에서 import를 시키면

    Python 2.7.12 (default, Nov 12 2018, 14:36:49)
    [GCC 5.4.0 20160609] 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: No module named cv2

    Python 3.5.2 (default, Nov 12 2018, 13:43:14)
    [GCC 5.4.0 20160609] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import cv2
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    ImportError: No module named 'cv2'

    이런식으로 나옵니다 설치시 에러없이 모든 과정을 끝냈는데 이유가 뭘까요 ?
    pkg-config --modversion opencv
    해도 패키지 설치가안되었다고 뜹니다

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes webnautes 2019.03.28 17:33 신고

      cmake 실행시 다음 처럼 보이는지 확인해보세요

      -- Python 2:

      -- Interpreter: /usr/bin/python2.7 (ver 2.7.12)

      -- Libraries: /usr/lib/x86_64-linux-gnu/libpython2.7.so (ver 2.7.12)

      -- numpy: /usr/lib/python2.7/dist-packages/numpy/core/include (ver 1.11.0)

      -- install path: lib/python2.7/dist-packages/cv2/python-2.7

      --

      -- Python 3:

      -- Interpreter: /usr/bin/python3 (ver 3.5.2)

      -- Libraries: /usr/lib/x86_64-linux-gnu/libpython3.5m.so (ver 3.5.2)

      -- numpy: /usr/lib/python3/dist-packages/numpy/core/include (ver 1.11.0)

      -- install path: lib/python3.5/dist-packages/cv2/python-3.5

  21. Favicon of https://mason-lee.tistory.com BlogIcon 용산동쌍가락지 2019.04.08 21:34 신고

    감사합니다~
    with CUDA로 특정버전을 어떻게하면 깔 수 있나 찾아보고있었는데
    한국어로 잘 정리가 되어있어서 좋았네요~~

+ Recent posts