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

Ubuntu 16.04.3 LTS가 설치된 컴퓨터에서 진행했습니다.



1. OpenCV 2.4 버전 제거


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


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


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


5. OpenCV 설치 결과 확인

   5.1. C/C++

   5.2. Python


최종 업데이트 - 2017. 12. 27




Ubuntu 18.04에서 OpenCV 설치를 진행하는 포스팅이  추가되었습니다.


Ubuntu 18.04에 opencv_contrib 포함하여 OpenCV 3.4.1 설치
http://webnautes.tistory.com/1186





1. OpenCV 2.4 버전 제거

OpenCV 2.4대 버전이 설치되어 있으면 새로 설치하는 OpenCV 3.4 버전이 제대로 동작하지 않기 때문에 제거해주어야 합니다.




아래처럼 보이면 OpenCV 2.4대 버전이 설치안되어 있는 상태입니다.

다음 단계로 넘어가도  됩니다.


webnautes@webnautes-note:~$ 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-note:~$ pkg-config --modversion opencv
2.4.9.1




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


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




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

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

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



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



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

libgtk2.0-dev
libgtk-3-dev

libqt5-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-note:~$ mkdir opencv
webnautes@webnautes-note:~$ cd opencv
webnautes@webnautes-note:~/opencv$




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

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




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

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


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




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


webnautes@webnautes-note:~/opencv$ ls -d */
opencv-3.4.0/  opencv_contrib-3.4.0/




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

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


webnautes@webnautes-note:~/opencv$ cd opencv-3.4.0/
webnautes@webnautes-note:~/opencv/opencv-3.4.0$ mkdir build
webnautes@webnautes-note:~/opencv/opencv-3.4.0$ cd build
webnautes@webnautes-note:~/opencv/opencv-3.4.0/build$




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


$ 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_OPENGL=ON \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.4.0/modules \
-D WITH_V4L=ON  \
-D WITH_FFMPEG=ON \
-D WITH_XINE=ON \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
../




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


-- Configuring done
-- Generating done
-- Build files have been written to: /home/webnautes/opencv/opencv-3.4.0/build




cmake 실행 결과입니다.


-- General configuration for OpenCV 3.4.0 =====================================

--   Version control:               unknown

--

--   Extra modules:

--     Location (extra):            /home/webnautes/opencv/opencv_contrib-3.4.0/modules

--     Version control (extra):     unknown

--

--   Platform:

--     Timestamp:                   2017-12-27T06:32:42Z

--     Host:                        Linux 4.10.0-42-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

--       requested:                 SSE4_1 SSE4_2 AVX FP16 AVX2

--       SSE4_1 (3 files):          + SSSE3 SSE4_1

--       SSE4_2 (1 files):          + SSSE3 SSE4_1 POPCNT SSE4_2

--       FP16 (1 files):            + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 AVX

--       AVX (5 files):             + SSSE3 SSE4_1 POPCNT SSE4_2 AVX

--       AVX2 (9 files):            + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2

--

--   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 /usr/lib/x86_64-linux-gnu/libGLU.so /usr/lib/x86_64-linux-gnu/libGL.so

--     3rdparty dependencies:

--

--   OpenCV modules:

--     To be built:                 aruco bgsegm bioinspired calib3d ccalib core datasets dnn dpm face features2d flann fuzzy highgui img_hash imgcodecs imgproc 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:                    js world

--     Disabled by dependency:      -

--     Unavailable:                 cnn_3dobj cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev cvv dnn_modern freetype hdf java matlab ovis sfm ts viz

--     Applications:                apps

--     Documentation:               NO

--     Non-free algorithms:         NO

--

--   GUI:

--     QT:                          YES (ver 4.8.7 EDITION = OpenSource)

--       QT OpenGL support:         YES (/usr/lib/x86_64-linux-gnu/libQtOpenGL.so)

--     GTK+:                        NO

--     OpenGL support:              YES (/usr/lib/x86_64-linux-gnu/libGLU.so /usr/lib/x86_64-linux-gnu/libGL.so)

--     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 )

--     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)

--

--   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)

--     libv4l/libv4l2:              NO

--     v4l/v4l2:                    linux/videodev2.h

--     Xine:                        YES (ver 1.2.6)

--     gPhoto2:                     NO

--

--   Parallel framework:            pthreads

--

--   Trace:                         YES (with Intel ITT)

--

--   Other third-party libraries:

--     Lapack:                      NO

--     Eigen:                       YES (ver 3.2.92)

--     Custom HAL:                  NO

--

--   NVIDIA CUDA:                   NO

--

--   OpenCL:                        YES (no extra features)

--     Include path:                /home/webnautes/opencv/opencv-3.4.0/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)

--     packages path:               lib/python2.7/dist-packages

--

--   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)

--     packages path:               lib/python3.5/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

-- -----------------------------------------------------------------

--

-- Configuring done

-- Generating done

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




다음처럼 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)
--     packages path:               lib/python2.7/dist-packages
--
--   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)
--     packages path:               lib/python3.5/dist-packages
--
--   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_OPENGL=ON \

-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.4.0/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.5/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 다음에 위에서 확인한 숫자를 붙여서 실행해줍니다.


webnautes@webnautes-note:~/opencv/opencv-3.4.0/build$ make -j4



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

webnautes@webnautes-note:~/opencv/opencv-3.4.0/build$ sudo make install




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


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

# libc default configuration

/usr/local/lib

# Multiarch support

/lib/x86_64-linux-gnu

/usr/lib/x86_64-linux-gnu

/usr/lib/x86_64-linux-gnu/mesa-egl

/usr/lib/x86_64-linux-gnu/mesa




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


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




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


webnautes@webnautes-note:~/opencv/opencv-3.4.0/build$ sudo ldconfig




5. OpenCV 설치 결과 확인

5.1. C/C++

C/C++를 위해 OpenCV 라이브러리 사용가능 여부를 확인합니다.

문제 없으면 설치된 OpenCV 라이브러리의 버전이 출력됩니다.


webnautes@webnautes-note:~/opencv/opencv-3.4.0/build$ pkg-config --modversion opencv

3.4.0




아래처럼 opencv를 찾을 수 없다고 나오면  추가 작업이 필요합니다.


webnautes@webnautes-note:~/opencv/opencv-3.4.0/build$ 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




pkg-config 명령이 /usr/local/lib/pkgconfig 경로에 있는 opencv.pc 파일을 찾을 수 있도록 해줘야 합니다.


$ sudo sh -c 'echo PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig >> /etc/bash.bashrc'

$ sudo sh -c 'echo export PKG_CONFIG_PATH >> /etc/bash.bashrc'




로그아웃했다가 로그인하면 적용이됩니다.


다시 확인했을 때,  OpenCV 버전이 출력되야 합니다.


webnautes@webnautes-note:~/opencv/opencv-3.4.0/build$ pkg-config --modversion opencv

3.4.0




pkg-config --libs --cflags opencv 명령을 실행했을 때 다음처럼 나오면 문제없이 설치가 완료된 것입니다.





/usr/local/share/OpenCV/samples/  경로에 OpenCV 예제코드들이 설치됩니다.





예제 코드를 하나 가져와서 컴파일 해보겠습니다.


$ cp /usr/local/share/OpenCV/samples/cpp/facedetect.cpp ./




컴파일 후, 실행시켜 봅니다.


$ g++ -o facedetect facedetect.cpp $(pkg-config --libs --cflags opencv)  

$ ./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



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


webnautes@webnautes-note:~/opencv/opencv-3.4.0/build$ ./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 ...

[ INFO:0] Initialize OpenCL runtime...

detection time = 46.7177 ms

detection time = 46.2221 ms

detection time = 25.8225 ms

detection time = 25.4972 ms

detection time = 25.7804 ms

detection time = 25.614 ms

detection time = 24.6517 ms

detection time = 26.3028 ms

detection time = 27.0063 ms

detection time = 26.7993 ms

detection time = 27.4889 ms



5.2. Python

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

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

webnautes@webnautes-note:~/opencv/opencv-3.4.0/build$ python
Python 2.7.12 (default, Nov 20 2017, 18:23:56)

[GCC 5.4.0 20160609] on linux2

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

>>> import cv2

>>> cv2.__version__

'3.4.0'

>>>



webnautes@webnautes-note:~/opencv/opencv-3.4.0/build$ python3
Python 3.5.2 (default, Nov 23 2017, 16:37:01)

[GCC 5.4.0 20160609] on linux

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

>>> import cv2

>>> cv2.__version__

'3.4.0'

>>>




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


$  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




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


python2

webnautes@webnautes-note:~/opencv/opencv-3.4.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>]


[ INFO:0] Initialize OpenCL runtime...



python3

webnautes@webnautes-note:~/opencv/opencv-3.4.0/build$  python3 /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>]


[ INFO:0] Initialize OpenCL runtime...




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


webnautes@webnautes-note:~/opencv/opencv-3.4.0/build$ cd
webnautes@webnautes-note:~$ rm -rf opencv









  1. 이전 댓글 더보기
  2. ljw 2017.12.17 16:52 신고

    포스팅으로 설치 완료했습니다. 친절하고 빠른 답변 감사드립니다.

  3. james 2017.12.20 11:25 신고

    안녕하세요. 포스트를 현재 참고하면서 opencv 설치 중입니다. cat /etc/ld.so.conf.d/*
    실행했을때 다음과 같이 메세지가 뜹니다.
    /usr/lib/x86_64-linux-gnu/libfakeroot
    # Multiarch support
    /lib/i386-linux-gnu
    /usr/lib/i386-linux-gnu
    /lib/i686-linux-gnu
    /usr/lib/i686-linux-gnu
    /usr/local/lib
    /usr/local/lib
    # Multiarch support
    /lib/x86_64-linux-gnu
    /usr/lib/x86_64-linux-gnu
    /usr/lib/nvidia-384
    /usr/lib32/nvidia-384
    /usr/lib/nvidia-384
    /usr/lib32/nvidia-384
    # Legacy biarch compatibility support
    /lib32
    /usr/lib32

    # libc default configuration 이 부분이 목록에 나타지를 않네요. /etc/ld.so.conf.d 경로에 있는 libc.conf 파일에 /usr/local/lib
    라고 추가 되어있는게 확인 되구요. sudo ldconfg 로 실행 한 후에도 # libc default configuration 라고 뜨지를 않습니다. cmake 실행 뒤에 다음 같은 warning 이 뜨는데요.
    -- Configuring done
    CMake Warning at cmake/OpenCVUtils.cmake:958 (add_library):
    Cannot generate a safe linker search path for target opencv_core because
    files in some directories may conflict with libraries in implicit
    directories:

    link library [liblapack.so] in /usr/lib may be hidden by files in:
    /home/james/anaconda2/lib
    link library [libcblas.so] in /usr/lib may be hidden by files in:
    /home/james/anaconda2/lib

    Some of these libraries may not be found correctly.
    Call Stack (most recent call first):
    cmake/OpenCVModule.cmake:833 (ocv_add_library)
    cmake/OpenCVModule.cmake:749 (_ocv_create_module)
    modules/core/CMakeLists.txt:58 (ocv_create_module)
    이 warning 이 문제가 원인이 될수 있을까요?

  4. 2018.01.04 01:26

    비밀댓글입니다

  5. seunggu 2018.02.07 04:34 신고

    If this problem occurs :

    #include "opencv2/xfeatures2d/cuda.hpp"
    ^

    then try :
    cmake -D BUILD_opencv_xfeatures2d=OFF ..

  6. 일이다 2018.02.27 14:14 신고

    안녕하세요 좋은 포스팅 먼저 감사드립니다.
    파이썬 2에서는 문제 없는데
    파이썬 3에서 아래와 같은 에러가 뜹니다.

    cmake 빌드 경로는 맞춰준 거 같은데.. 혹시 답변 주실 수 있는지요?

    ImportError: /opt/ros/kinetic/lib/python2.7/dist-packages/cv2.so: undefined symbol: PyCObject_Type

    하나 더 여쭙자면 파이썬 2로 예제를 구동시에는

    VIDIOC_QUERYCTRL: Input/output error

    이런 문구가 뜨는데 예제는 잘 작동되는것 같은데.. 무시해도 되는건가요?

    • webnautes webnautes 2018.02.27 14:21 신고

      파이썬2와 파이썬 3의 경로를 지정안했을 때 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)
      -- packages path: lib/python2.7/dist-packages
      --
      -- 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)
      -- packages path: lib/python3.5/dist-packages


      위 결과가 보이지 않는다면 현재 사용중인 파이썬2와 파이썬3의 경로를 확인해서 다음처럼 입력해주면 됩니다.
      제 경우에는 파이썬 2.7과 파이썬 3.5의 경로를 지정해주었습니다.
      문제 없으면 위 결과처럼 파이썬2와 파이썬3의 경로가 보여야합니다.

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

      -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.4.0/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.5/dist-packages \

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

      ../

    • 일이다 2018.02.27 14:22 신고

      한 가지 더 여쭤봅니다.

      import cv2
      cv2.__version__

      실행 결과가 3.4가 아닌 3.3.1인데..

      분명 이전 버전을 지우고 설치했는데

      왜 그런지 궁금합니다.

    • webnautes webnautes 2018.02.27 14:31 신고

      OpenCV 3.3.1이라면 소스 컴파일해서 설치하셨겠네요..

      다음처럼 해서 삭제하고 진행해보세요..

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


  7. 일이다 2018.02.27 14:27 신고

    먼저 답변 진심으로 감사드립니다.

    말씀해주신바 확인해보니
    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/local/lib/python2.7/dist-packages/numpy/core/include (ver 1.14.0)
    -- packages path: /usr/lib/python2.7/dist-packages
    --
    -- 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.14.0)
    -- packages path: /usr/lib/python3.5/dist-packages

    위와 같은 결과를 얻었습니다. 페키지 경로가 말씀해주신바와 다른데 이 때문일까요?

    • webnautes webnautes 2018.02.27 14:32 신고


      우분투 버전 차이 또는 파이썬 패키지 업그레이드로인해서 파이썬 버전이 다를 수 있습니다...
      사용에는 문제가 없습니다.

    • webnautes webnautes 2018.02.27 14:32 신고

      기존에 사용했던 3.3.1 버전이 삭제안되서 생긴 문제인듯합니다.

  8. 일이다 2018.02.27 20:13 신고

    안녕하세요? 좋은 포스트와 답변으로 무사히? 설치를 완료했습니다 감사합니다!

    한 가지 궁금하게 있어서 질문 남깁니다.

    opencv는 정상적으로 3.4 버전으로 설치가 됐습니다만..

    ROS를 설치히면서 ROS에 속한 3.3.1 버전으로 파이썬에서 잡히는것 같습니다.

    파이썬에서 이 부분을 조정하려면 $PYTHONPATH 부분을 수정해야 하는건가요?

    시간 나실 때 답변 부탁드립니다!

    • webnautes webnautes 2018.02.27 22:37 신고

      기존 설치순서가 opencv설치후.. ros를 설치했다면.

      ROS를 다시 설치하면 해결될듯합니다.

  9. dskim 2018.03.07 19:32 신고

    친절한 컨텐츠 제공 감사 드립니다.

    윈도우7-64비트 컴에 vmware12를 설치하여, virtual 컴을 만들고, O/S로 우분투16.04LTS 클라이언트 버전(GNOME기반) 을 설치하여 사용중입니다.

    현재, 올려주신 내용대로 opencv3.4 를 설치하는 작업 중입니다. 위에 알려주신 대로, 처음 부터 확실하게 확인하면서 실행하여,

    cmake -D 긴 명령을 수행하고, cmake install 까지 수십분 걸려 중간에 정지 없이 작업을 마쳤는데,

    pkg-config --libs --cflags opencv 명령 실행시킨 결과 최종 설치된 모듈들을 살펴보니

    위에 보여주신 것에서 많은 것들이 (core, imgproc, highgui 등 기본적인 모듈들 17개만 설치됨, 상기 보여주신 제대로 된 예에는 42개 모듈임) 빠져 있고,

    /usr/local/share/OpenCV/ 까지는 생성되는데 그 밑에 samples 폴더가 생성되지 않네요.

    왜 이런 현상이 나오는지 혹시 감이 잡히시면 알려주십시오.

    • webnautes webnautes 2018.03.07 20:13 신고

      -lopencv_xfeatures2d가 안보인다면
      cmake에서 아래 옵션이 제대로 인식 안된게 아닌가 싶네요..

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


      cmake 실행결과 다음처럼 To be built 항목에 모듈 목록이 보여야 합니다.
      -- OpenCV modules:

      -- To be built: aruco bgsegm bioinspired calib3d ccalib core datasets dnn dpm face features2d flann fuzzy highgui img_hash imgcodecs imgproc 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


      예제 코드 설치와 관련있는 옵션은 다음 2가지입니다.
      -D INSTALL_C_EXAMPLES=ON \
      -D INSTALL_PYTHON_EXAMPLES=ON \

  10. froggy 2018.03.20 11:49 신고

    설치를 완료하고 확인하는 과정에서
    $ pkg-config --modversion opencv 로 확인이 안됩니다.
    path 설정도 해 주었는데 뭐가 문제일지요.
    참고로 저는 32bit 입니다.

    • webnautes webnautes 2018.03.20 21:30 신고

      opencv.pc파일이 생성되었나 다음처럼 확인해보세요..

      $ ls /usr/local/lib/pkgconfig/opencv.pc
      /usr/local/lib/pkgconfig/opencv.pc

      해당 파일이 있다면 포스팅에 나온대로 해당 경로만 추가해주시면 해결될 듯합니다.

  11. hoho 2018.03.27 22:36 신고

    froggy2018.03.20 11:49 신고
    설치를 완료하고 확인하는 과정에서
    $ pkg-config --modversion opencv 로 확인이 안됩니다.
    path 설정도 해 주었는데 뭐가 문제일지요.
    참고로 저는 32bit 입니다.

    URL Delete Reply
    webnautes webnautes2018.03.20 21:30 신고
    opencv.pc파일이 생성되었나 다음처럼 확인해보세요..

    $ ls /usr/local/lib/pkgconfig/opencv.pc
    /usr/local/lib/pkgconfig/opencv.pc

    해당 파일이 있다면 포스팅에 나온대로 해당 경로만 추가해주시면 해결될 듯합니다.

    --------------------------------------------------------------------------------------------------
    안녕하세요 선생님 이 댓글을 읽었는데요 저도 같은 현상이 나타나는데
    $ ls /usr/local/lib/pkgconfig/opencv.pc
    /usr/local/lib/pkgconfig/opencv.pc
    를 실행해보니까

    ls: cannot access '/usr/local/lib/pkgconfig/opencv.pc': No such file or directory 이렇게 나옵니다.

    그 디렉토리에 pkgconfig폴더 조차 없더라구요.. 이런경우는 어떻게 해야할까요?
    감사드립니다!

  12. 초보 2018.04.08 06:47 신고

    cmake 실행 결과는 어떻게 확인하죠?

  13. opencv초보자 2018.04.27 02:09 신고

    안녕하세요! 올려주신 그대로 진행해서 opencv3.4.0을 받았다고 확인됬는데
    이제 카메라인식 과정에서
    ./facedetect: error while loading shared libraries: libopencv_highgui.so.3.4: cannot open shared object file: No such file or directory
    라고 뜨고 안넘어가네요.. 혹시 이 문제에 대해 알수 있을까요?

    • webnautes webnautes 2018.04.27 07:44 신고



      1. 다음처럼 libopencv_highgui.so.3.4 위치를 검색합니다.

      sudo find / -name "libopencv_highgui.so.3.4"


      2. /etc/ld.so.conf.d/opencv.conf 파일에 검색된 경로를 저장합니다.


      3. 다음 명령으로 라이브러리 경로 추가한 것을 반영합니다.

      sudo ldconfig -v

    • opencv초보자 2018.04.28 14:04 신고

      안녕하세요
      알려주신대로 해봐도 오류는 그대로입니다...
      저의 libopencv_highgui.so.3.4
      위치가
      /home/yoo/opencv/opencv-3.4.0/build/lib/libopencv_highgui.so.3.4
      /usr/local/lib/x86_64-linux-gnu/libopencv_highgui.so.3.4
      이렇게 떠서
      말씀하신곳에 opencv.conf를 만들어서 저걸 집어넣었으나 결과는 변하지 않는데 무엇이 문제일까요 ㅠㅠ

    • webnautes webnautes 2018.04.28 14:32 신고

      /etc/ld.so.conf.d/opencv.conf 파일에 /usr/local/lib를 입력하고..
      $ sudo ldconfig -v를 실행하세요..


      그리고나서 다음 명령 실행하면 OpenCV 버전 나오는지 확인하세요..
      $ pkg-config --modversion opencv

      그래도 문제 있으면..다음 명령을 실행하고 로그아웃했다 로그인하고 다시해보세요..

      $ sudo sh -c 'echo PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig >> /etc/bash.bashrc'

      $ sudo sh -c 'echo export PKG_CONFIG_PATH >> /etc/bash.bashrc'


    • opencv초보자 2018.04.28 15:27 신고

      감사합니다 ㅠ
      알려주신 주소가 아닌
      /usr/local/lib/x86_64-linux-gnu/
      라고 하니깐 이 오류가 사라졌어요!

      그런데 카메라가 select timeout이 뜨고 영상은 출력이 안되는데 혹시 어느부분을 고쳐야될지 조언을 얻을수 있을까요?

    • webnautes webnautes 2018.04.29 08:35 신고

      축하드려요..

      문제가 해결될지는 확실치 않지만 다음 링크를 검토해보세요..

      https://stackoverflow.com/questions/43208580/opencv-3-2-gives-select-timeout-when-grabbing-but-fswebcam-works

    • opencv초보자 2018.04.30 12:57 신고

      정말 계속 질문드려서 죄송해요...
      덕분에 영상은 뜨지만, 윗부분만 나오고
      아래부분은 회색으로 나오지 않는데 이부분에 대해 혹시 팁을 얻을수 있나요.. ㅠ

      overstack이랑 다른 사이트에 물어봐도 명쾌한 해답이 없네요 ㅠㅠ

    • webnautes webnautes 2018.04.30 13:05 신고

      링크에 있는 아래 명령을 사용하셨나요?

      modprobe uvcvideo quirks=128 nodrop=1 timeout=6000


      우선 해당 옵션을 비활성화하고 다른 웹캠 프로그램을 설치해서 화면이 정상적으로 나오는지 부터 해보세요..

      문제 없다면 해당 명령의 옵션을 바꾸어가며 테스트해봐야 할 듯합니다..

    • opencv초보자 2018.04.30 13:09 신고

      네 말씀하신것들 다 해보고
      일반 윈도우에서 캠사용까지 해봤습니다! 윈도우에서는 영상이 잘 나오는데
      우분투에서 사용시 화면이 아까 말씀드린것처럼 윗부분만 출력되네요 ㅠㅠ

      명령의 옵션을 바꾸어가며 테스트 해보라는것은 혹시 구체적으로 알수 있을까요?

    • webnautes webnautes 2018.04.30 13:41 신고

      아래 명령때문에 웹캠에서 캡처가 가능해졌나 싶어졌나해서요.
      modprobe uvcvideo quirks=128 nodrop=1 timeout=6000


      그리고 치즈 같은 우분투용 웹캠 프로그램으로도 테스트 해보셨나요?

    • opencv초보자 2018.04.30 14:12 신고

      네 아래 그것 덕분에 화면이 출력되었고,
      그 화면은 윗부분 조금만 나타내어주고, 나머지는 초록색으로 뜹니다 ㅠ

      치즈도 install 해서 cheese 입력시에 웹캠에서 윗부분만 출력이 되옵니다 ㅠ

    • webnautes webnautes 2018.04.30 16:57 신고

      modprobe uvcvideo quirks=128 nodrop=1 timeout=6000


      화면이 이상한 게 위 명령에서 quirks 파라미터랑 관련있는거 같은데..


      저도 파라미터에 어떤 값을 해야할지 확실치 않아서 찾아보니 파라미터 설명이 된곳이 있네요..

      다음 두 링크를 참고해보세요...

      https://stackoverflow.com/a/25619508

      http://www.ideasonboard.org/uvc/faq/#faq6

    • opencv초보자 2018.05.02 16:23 신고

      알려주셨으나 그대로 방법이 유지되네요.. 지금 의심해보는건 그래픽 카드인데
      인터넷에 있는 intel 그래픽카드 설치방법이 인텔사에서 그 서비스를 중단해서 안되네요.. 혹시 그래픽 설치 방법을 알수 있을까요?

    • webnautes webnautes 2018.05.02 17:59 신고

      이미지 파일로 저장해보셨나요?

    • opencv초보자 2018.05.03 00:44 신고

      네 이미지 검출됩니다! 그럼 그래픽 문제는 아닌건가요? ㅜㅜ

      ubuntu 16.04.03 LTS를 다운받아서 Vmware pro에서 실행중이며, 버전 변경, quirks 128, 640등 사용 해보았으나 진전이 없네요.. 죄송합니다

    • webnautes webnautes 2018.05.04 19:08 신고

      VMware 문제 같습니다....

      VirtualBox로도 테스트 해 볼 필요가 있을듯 합니다..

  14. newbytoOpenCV 2018.05.07 02:40 신고

    안녕하세요 덕분에 설치를 완료했습니다!
    그런데 예제를 돌려봤을 경우
    Python 예제의 경우
    face detection using haar cascades

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

    (ERROR)icvOpenAVI_XINE(): Unable to initialize video driver.
    Warning: unable to open video source: /dev/video0
    Warning: unable to open video source: synth
    Traceback (most recent call last):
    File "/usr/local/share/OpenCV/samples/python/facedetect.py", line 52, in <module>
    ret, img = cam.read()
    AttributeError: 'NoneType' object has no attribute 'read'

    위처럼 에러가 뜨고요

    카메라 인식 예제는
    Capture from camera #0 didn't work
    Detecting face(s) in

    이처럼 뜹니다..

    어떻게 해야되는 걸까요?

    그리고 마지막단계에 "필요 없어진 컴파일에 사용했던 opencv 소스코드 디렉토리를 삭제합니다."

    이것을 무조건 수행하는 거지요??

    • webnautes webnautes 2018.05.07 09:54 신고

      라이브러리 문제라기 보단 웹캠 드라이버 및 인식 문제 같습니다.
      혹 OpenCV C++ API에선 문제 없었다면 다시 알려주세요..

      우선 ls /dev/video* 명령을 사용하면 다음처럼 웹캠 목록이 보이는지요?

      webnautes@webnautes-pc:~$ ls /dev/video*
      video0 video1


      그리고 노트북 웹캠이 아니라면 연결후 dmesg 명령을 사용하면 다음처럼 보입니다.
      웹캠 연결에 문제가 있다면 에러메시지가 보입니다.

      [ 168.736864] usb 1-7: new high-speed USB device number 5 using xhci_hcd
      [ 168.951585] usb 1-7: New USB device found, idVendor=046d, idProduct=082b
      [ 168.951591] usb 1-7: New USB device strings: Mfr=1, Product=2, SerialNumber=0
      [ 168.951595] usb 1-7: Product: Webcam C170
      [ 168.951598] usb 1-7: Manufacturer:
      [ 168.955424] uvcvideo: Found UVC 1.00 device Webcam C170 (046d:082b)
      [ 168.962777] uvcvideo 1-7:1.0: Entity type for entity Processing 2 was not initialized!
      [ 168.962783] uvcvideo 1-7:1.0: Entity type for entity Extension 6 was not initialized!
      [ 168.962788] uvcvideo 1-7:1.0: Entity type for entity Camera 1 was not initialized!
      [ 168.963089] input: Webcam C170: Webcam C170 as /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.0/input/input23
      [ 169.528616] usbcore: registered new interface driver snd-usb-audio



      그리고 컴파일시 사용한 OpenCV 소스코드는 샘플 및 예제 코드 외에는 필요없습니다.

      opencv-3.4.0/samples 위치와

      opencv_contrib-3.4.0/modules 에 있는 모듈별로 samples 디렉토리가 존재합니다.

  15. bilas77 2018.05.14 20:36 신고

    위 설치 과정중 make 하고 나서

    [ 84%] Building CXX object modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/src/boostdesc.cpp.o
    /home/pi/opencv/opencv_contrib-3.4.0/modules/xfeatures2d/src/boostdesc.cpp:646:37: fatal error: boostdesc_bgm.i: 그런 파일이나 디렉터리가 없습니다
    #include "boostdesc_bgm.i"
    ^
    compilation terminated.
    modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/build.make:91: 'modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/src/boostdesc.cpp.o' 타겟에 대한 명령이 실패했습니다
    make[2]: *** [modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/src/boostdesc.cpp.o] 오류 1
    CMakeFiles/Makefile2:6886: 'modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/all' 타겟에 대한 명령이 실패했습니다
    make[1]: *** [modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/all] 오류 2
    Makefile:162: 'all' 타겟에 대한 명령이 실패했습니다
    make: *** [all] 오류 2

    다음과 같이 오류가 납니다 ㅠㅠ
    어떻게 해결해야 할까요?

    • webnautes webnautes 2018.05.14 22:50 신고

      에러난 파일은 다음처럼 cmake 명령시 다운로드를 받게 되어 있습니다..
      인터넷이 연결되어 있다면 정상적으로 진행되는 부분인데..
      원인을 찾기 위해 cmake 명령 실행후 로그에서 아래 부분을 찾아보세요..

      tiny-dnn: Download: v1.0.0a3.tar.gz

      -- xfeatures2d/boostdesc: Download: boostdesc_bgm.i
      -- xfeatures2d/boostdesc: Download: boostdesc_bgm_bi.i
      -- xfeatures2d/boostdesc: Download: boostdesc_bgm_hd.i
      -- xfeatures2d/boostdesc: Download: boostdesc_binboost_064.i
      -- xfeatures2d/boostdesc: Download: boostdesc_binboost_128.i
      -- xfeatures2d/boostdesc: Download: boostdesc_binboost_256.i
      -- xfeatures2d/boostdesc: Download: boostdesc_lbgm.i
      -- xfeatures2d/vgg: Download: vgg_generated_48.i
      -- xfeatures2d/vgg: Download: vgg_generated_64.i
      -- xfeatures2d/vgg: Download: vgg_generated_80.i
      -- xfeatures2d/vgg: Download: vgg_generated_120.i

  16. 초보 2018.05.21 16:35 신고

    안녕하세요 제가 우분투와 opencv를 이 홈페이지로 공부중에 있습니다. 다름이 아니라
    마지막 C++ 실행하는 부분에서 오류가 나와서 여러 사이트를 봤지만 해결을 못했습니다.


    ./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
    이렇게 마지막에 컴파일해서 실행을 시키면 바로 아래와 같이 에러가 나옵니다.

    OpenCV Error: Unspecified error (GStreamer: unable to start pipeline)
    in cvCaptureFromCAM_GStreamer, file /home/han/opencv/opencv-3.4.0/modules/videoio/src/cap_gstreamer.cpp, line 890
    VIDEOIO(cvCreateCapture_GStreamer(CV_CAP_GSTREAMER_V4L2, reinterpret_cast<char *>(index))): raised OpenCV exception:

    /home/han/opencv/opencv-3.4.0/modules/videoio/src/cap_gstreamer.cpp:
    890: error: (-2) GStreamer: unable to start pipeline in function cvCaptureFromCAM_GStreamer

    Capture from camera #0 didn't work
    Detecting face(s) in

    제 생각엔 제 노트북에 있는 카메라가 재대로 연동이 안되서 아래와 같이 카메라가 작동이 안되서 나오는 오류인지 몰라서 댓글 달았습니다.

    • 초보 2018.05.21 17:11 신고

      python , python3 도 오류가 나왔는데
      (python3:5369): GStreamer-CRITICAL **: 00:38:53.123: gst_element_make_from_uri: assertion 'gst_uri_is_valid (uri)' failed
      GStreamer: Error opening bin: no source element for URI "/dev/video0"

      파일이 없다고 합니다.
      예제 실행만 하면 오류가 나옵니다 C++도 그렇구요.

    • webnautes webnautes 2018.05.22 18:07 신고

      ls /dev/video0 명령으로 video0 파일이 존재하는지 확인해보고..

      노트북이 아니라면 웹캠을 재연결하고 dmesg 명령으로 웹캠 관련 로그를 확인해보세요

      그리고 나서 카메라 캡처해서 화면에 보여주는 다음 코드로 테스트해보세요.

      http://webnautes.tistory.com/819

  17. gomingomin 2018.05.21 21:04 신고

    안녕하세요. 포스팅 정말정말 잘 봤습니다.

    제가 몇가지 문제가 있어 질문 드립니다.

    우선, 5.opencv 설치 확인 결과에서 예제 코드들이 설치된 것 까지 확인하였고 여기까지는 이상없었습니다.

    1. 이 다음부터 실행이 명령어를 똑같이 하였는데 실행이 되지 않고 있습니다.
    2. 또 한가지 문제는, cmake를 전부 입력하고 엔터를 치면 아래쪽에 python2에 대한 항목은 나오는데 python3에 대한 항목은 나오지 않습니다.
    그래서 다른분이 질문한 것에서 비슷한 것이 있어 그에대한 답변을 보고 하였는데도 결과는 똑같았습니다.

    어떻게 해결해야 하는지 혹시.... 답변 해주실수 있나요...

    • webnautes webnautes 2018.05.22 18:18 신고

      질문 1은 입력하신 명령과 에러난 메시지를 복사해서 알려주세요..

      질문 2의 경우에는 포스팅에서 아래 부분을 찾아서 진행하시면 됩니다.
      파이썬 3를 위한 옵션에 있는 경로가 포스팅에 적혀있는 것과 다른지 확인해보세요

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


  18. gomingomin 2018.05.23 13:19 신고

    안녕하세요 5월 21일 질문드렸던 사람입니다. 먼저 첫번째 질문글에 대해서 답변해주셔서 감사드립니다!!

    비슷한 질문을 다시 하면 아래와 같습니다.

    1.예제코드 하나 가져와서 컴파일 해보겠습니다 라는 항목을 따라하기 위해
    ~/opencv/opencv-3.4.0/build$ cp/ usr/local/share/OpenCV/samples/cpp/facedetect.cpp ./ 이렇게 터미널에 입력을 하니
    → cp: cannot create regular file './facedetect.cpp': Permission denied 라고 나왔습니다.

    2.예제는 그냥 넘기고 파이썬에서 임포트 cv2가 되는지 확인하려고 하였는데 아래와 같이 안되었습니다.
    →먼저 터미널에서 가상환경(source activate 가상환경이름)을 불러서 python 또는 python2를 입력하고 import cv2를 입력하니
    →①가상환경에서 python(3.5.4)를 부르고 import cv2를 했을때,
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    ImportError : No module named 'cv2'라고 나왔습니다.
    →②가상환경에서 이번에는 python2(2.7.12)를 부르고 import cv2를 했을때,
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    ImportError : /lib/x86_64-linux-gnu/libz.so.1: version 'ZLIB_1.2.9' not found (required by /home/anaconda3/lib/libpng16.so.16)라고 나왔습니다.
    그래서 제가 libpng16.so.16이 있는지 없는지 보니 실제로 anaconda3/lib에 libpng16.so.16이 없었습니다. 다른 파일에서 복사 붙여넣기 하려고 해도 안되는것 같아요.

    3.cmake에서
    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)
    -- packages path: lib/python3.5/dist-packages
    위와 같이 python3에 해당하는 것이 하나도 나오지 않았습니다. 그래서 위에 빨간색으로 표시해준 부분처럼 똑같이 하였는데 그래도 되지 않았습니다.
    빨간색으로 하신 경로의 파일명도 저와 같았는데 되지 않았습니다.
    한가지 다른점은 -D PYTHON3_PACKAGES_PATH=/usr/lib/python3.5/dist-packages \에서 python3.5 폴더에 들어가보니 dist-packages 존재하지 않았습니다.

    세가지 질문 드렸는데 조금 긴것 같아 죄송하게 생각합니다....

    • webnautes webnautes 2018.05.24 23:05 신고

      1. 홈 디렉토리이면 복사해온 파일을 현재 위치에 생성 가능할텐데 이상하군요..

      앞에 sudo를 붙여서 해보세요..
      sudo cp /usr/local/share/OpenCV/samples/cpp/facedetect.cpp ./


      2-1. 파이썬 2에서 cv가 임포트되지 않는 것은...cmake 실행결과 다음처럼 Python2 관련 정보를 찾지못해서 그런거 같습니다.

      -- 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: lib/python2.7/dist-packages
      --


      cmake 결과 아래처럼 Interpreter 항목만 보인다면
      -- Python 2:
      -- Interpreter: /usr/bin/python2.7 (ver 2.7.12)


      포스팅에서 다음 부분을 찾아서 바로 아래있는 대로 해보세요..
      경로가 현재 사용중인 우분투와 같은지 확인해보셔야 합니다.

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


      2-2. 다음처럼 Zlib 1.2.9를 설치하면 해결될 듯합니다.

      wget https://zlib.net/fossils/zlib-1.2.9.tar.gz

      tar xvzf zlib-1.2.9.tar.gz

      cd zlib-1.2.9

      ./configure

      make

      sudo make install

      cd /lib/x86_64-linux-gnu

      ln -sf /usr/local/lib/libz.so.1.2.9/lib libz.so.1



      3. dist-packages 대신에 site-packages 디렉토리가 보이지 않나요?

      lib/python3.5/site-packages로 바꾸어 보세요..

  19. 우분투초보 2018.05.24 10:38 신고

    안녕하세여 이전 c++ / Python / Python3 마지막 예제코드 실행하다 실패한 사람입니다.

    말씀하신대로 ls /dev/video0 확인해서 파일이 없었구 현재 노트북 카메라로 이용해서 하고 있습니다.

    죄송하지만 노트북 카메라로 opencv 로 하는 방법과 저 파일이 없었을때 대처를 알고 싶습니다.

    • 우분투초보 2018.05.24 10:47 신고

      c++ 오류는
      OpenCV Error: Unspecified error (GStreamer: unable to start pipeline
      ) in cvCaptureFromCAM_GStreamer, file /home/han/opencv/opencv-3.4.0/modules/videoio/src/cap_gstreamer.cpp, line 890
      VIDEOIO(cvCreateCapture_GStreamer(CV_CAP_GSTREAMER_V4L2, reinterpret_cast<char *>(index))): raised OpenCV exception:

      /home/han/opencv/opencv-3.4.0/modules/videoio/src/cap_gstreamer.cpp:890: error: (-2) GStreamer: unable to start pipeline
      in function cvCaptureFromCAM_GStreamer

      Capture from camera #0 didn't work
      Detecting face(s) in

      파이선 오류들은

      face detection using haar cascades

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

      OpenCV Error: Unspecified error (GStreamer: unable to start pipeline
      ) in cvCaptureFromCAM_GStreamer, file /home/han/opencv/opencv-3.4.0/modules/videoio/src/cap_gstreamer.cpp, line 890
      VIDEOIO(cvCreateCapture_GStreamer (CV_CAP_GSTREAMER_FILE, filename)): raised OpenCV exception:

      /home/han/opencv/opencv-3.4.0/modules/videoio/src/cap_gstreamer.cpp:890: error: (-2) GStreamer: unable to start pipeline
      in function cvCaptureFromCAM_GStreamer

      Warning: unable to open video source: /dev/video0
      Warning: unable to open video source: synth
      Traceback (most recent call last):
      File "/usr/local/share/OpenCV/samples/python/facedetect.py", line 52, in <module>
      ret, img = cam.read()
      AttributeError: 'NoneType' object has no attribute 'read'

    • webnautes webnautes 2018.05.24 23:40 신고

      /dev/video0가 없다면 우분투에서 노트북 카메라를 인식 못하는 듯합니다.


      hwinfo 패키지를 설치하고
      sudo apt-get install hwinfo


      다음 명령으로 노트북 카메라 정보를 확인해보세요..
      hwinfo --usb


      혹시 다음과 같은 부분이 있다면
      Driver Activation Cmd: "modprobe gspca_zc3xx"


      modprobe gspca_zc3xx라고 입력하면
      /dev/video0가 생성됩니다.



      문제 있으면 hwinfo --usb 결과를 올려주세요

    • 우분투초보 2018.05.25 11:05 신고

      안녕하세요 작성자님 정말 귀찮으셔도 답변 해주셔서 정말 감사드립니다.
      우선 작성자님 께서 올려주신 말대로

      hwinfo 패키지를 설치하
      sudo apt-get install hwinfo
      파악
      hwinfo --usb
      확인
      Driver Activation Cmd: "modprobe gspca_zc3xx"
      생성
      modprobe gspca_zc3xx

      해서 dev/video0 에 디렉터리가 생성 하는게 확인 되었지만

      제가 확인 단계에서 해당되는 글자가 없고 그대로 생성 해서 위에 c++ python 으로 다시 확인 하였으나 오류가 나왔습니다. 우선 usb 확인 한 내용부터 올려드리겠습니다.

      03: USB 00.0: 10503 USB Mouse
      [Created at usb.122]
      Unique ID: FKGF.frIHgptZi00
      Parent ID: pBe4._Mkd+LmXb03
      SysFS ID: /devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-1/2-1:1.0
      SysFS BusID: 2-1:1.0
      Hardware Class: mouse
      Model: "VMware Virtual Mouse"
      Hotplug: USB
      Vendor: usb 0x0e0f "VMware, Inc."
      Device: usb 0x0003 "Virtual Mouse"
      Revision: "1.03"
      Compatible to: int 0x0210 0x0018
      Driver: "usbhid"
      Driver Modules: "usbhid"
      Device File: /dev/input/mice (/dev/input/mouse2)
      Device Files: /dev/input/mice, /dev/input/mouse2, /dev/input/event4, /dev/input/by-id/usb-VMware_VMware_Virtual_USB_Mouse-event-mouse, /dev/input/by-path/pci-0000:02:00.0-usb-0:1:1.0-event-mouse, /dev/input/by-id/usb-VMware_VMware_Virtual_USB_Mouse-mouse, /dev/input/by-path/pci-0000:02:00.0-usb-0:1:1.0-mouse
      Device Number: char 13:63 (char 13:34)
      Speed: 12 Mbps
      Module Alias: "usb:v0E0Fp0003d0103dc00dsc00dp00ic03isc01ip02in00"
      Driver Info #0:
      Buttons: 8
      Wheels: 1
      XFree86 Protocol: explorerps/2
      GPM Protocol: exps2
      Config Status: cfg=new, avail=yes, need=no, active=unknown
      Attached to: #8 (Hub)

      04: USB 00.1: 0000 Unclassified device
      [Created at usb.122]
      Unique ID: dOTr.MBYYmXkU5s1
      Parent ID: k4bc.Qnlx_VAX744
      SysFS ID: /devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-1/1-1:1.1
      SysFS BusID: 1-1:1.1
      Hardware Class: unknown
      Model: "Realtek HP Webcam"
      Hotplug: USB
      Vendor: usb 0x0bda "Realtek Semiconductor Corp."
      Device: usb 0x58ed "HP Webcam"
      Revision: "0.13"
      Serial ID: "200901010001"
      Driver: "uvcvideo"
      Driver Modules: "uvcvideo"
      Speed: 480 Mbps
      Module Alias: "usb:v0BDAp58EDd0013dcEFdsc02dp01ic0Eisc02ip00in01"
      Config Status: cfg=new, avail=yes, need=no, active=unknown
      Attached to: #6 (Hub)

      05: USB 00.0: 10a00 Hub
      [Created at usb.122]
      Unique ID: hSuP.eX9EDlP2ZX0
      Parent ID: pBe4._Mkd+LmXb03
      SysFS ID: /devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-2/2-2:1.0
      SysFS BusID: 2-2:1.0
      Hardware Class: hub
      Model: "VMware Virtual USB Hub"
      Hotplug: USB
      Vendor: usb 0x0e0f "VMware, Inc."
      Device: usb 0x0002 "Virtual USB Hub"
      Revision: "1.00"
      Driver: "hub"
      Driver Modules: "usbcore"
      Speed: 12 Mbps
      Module Alias: "usb:v0E0Fp0002d0100dc09dsc00dp00ic09isc00ip00in00"
      Config Status: cfg=new, avail=yes, need=no, active=unknown
      Attached to: #8 (Hub)

      06: USB 00.0: 10a00 Hub
      [Created at usb.122]
      Unique ID: k4bc.Qnlx_VAX744
      SysFS ID: /devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-0:1.0
      SysFS BusID: 1-0:1.0
      Hardware Class: hub
      Model: "Linux Foundation 2.0 root hub"
      Hotplug: USB
      Vendor: usb 0x1d6b "Linux Foundation"
      Device: usb 0x0002 "2.0 root hub"
      Revision: "4.15"
      Serial ID: "0000:02:03.0"
      Driver: "hub"
      Driver Modules: "usbcore"
      Speed: 480 Mbps
      Module Alias: "usb:v1D6Bp0002d0415dc09dsc00dp00ic09isc00ip00in00"
      Config Status: cfg=new, avail=yes, need=no, active=unknown

      08: USB 00.0: 10a00 Hub
      [Created at usb.122]
      Unique ID: pBe4._Mkd+LmXb03
      SysFS ID: /devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-0:1.0
      SysFS BusID: 2-0:1.0
      Hardware Class: hub
      Model: "Linux Foundation 1.1 root hub"
      Hotplug: USB
      Vendor: usb 0x1d6b "Linux Foundation"
      Device: usb 0x0001 "1.1 root hub"
      Revision: "4.15"
      Serial ID: "0000:02:00.0"
      Driver: "hub"
      Driver Modules: "usbcore"
      Speed: 12 Mbps
      Module Alias: "usb:v1D6Bp0001d0415dc09dsc00dp00ic09isc00ip00in00"
      Config Status: cfg=new, avail=yes, need=no, active=unknown


      이며 예제로 실행을 하면 오류는
      C++
      select timeout
      select timeout
      OpenCV Error: Assertion failed (total() == 0 || data != __null) in Mat, file /home/han/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/han/opencv/opencv-3.4.0/modules/core/include/opencv2/core/mat.inl.hpp:500: error: (-215) total() == 0 || data != __null in function Mat

      중지됨 (core dumped)

      python
      select timeout
      select timeout
      OpenCV Error: Assertion failed (total() == 0 || data != __null) in Mat, file /home/han/opencv/opencv-3.4.0/modules/core/include/opencv2/core/mat.inl.hpp, line 500
      Traceback (most recent call last):
      File "/usr/local/share/OpenCV/samples/python/facedetect.py", line 52, in <module>
      ret, img = cam.read()
      cv2.error: /home/han/opencv/opencv-3.4.0/modules/core/include/opencv2/core/mat.inl.hpp:500: error: (-215) total() == 0 || data != __null in function Mat

      긴 장문으로 질문드려서 죄송합니다.

    • webnautes webnautes 2018.05.25 17:49 신고

      괜찮습니다.~^^

      올려주신 것을 보니.. 아래처럼 카메라 정보가 있습니다.

      Vendor: usb 0x0bda "Realtek Semiconductor Corp."
      Device: usb 0x58ed "HP Webcam"
      Revision: "0.13"
      Serial ID: "200901010001"
      Driver: "uvcvideo"
      Driver Modules: "uvcvideo"


      기존 모듈을 제거하고
      modprobe -r gspca_zc3xx

      uvcvideo 모듈을 추가해줍니다.
      modprobe uvcvideo


      테스트를 다시 해보세요

    • 우분투초보 2018.05.25 18:42 신고

      빠른시간내에 답변을 해주셔서 감사 드립니다. 작성자분 말씀대로 삭제후 추가하고 다시 테스트를 해보았지만 이번엔 Video capturing has been started ... 이후
      동일하게 오류 형상이 나왔습니다.
      혹시나 제가 파일을 잘못 만든건지 기존 예제 테스트 파일도 삭제해서 다시 시도 해봤습니다.. ㅜㅜ

      소프트웨어인 치즈로 돌려보았지만 아직 무언가 문제가 있어서 안되는거 같구요...

      혹시 다시 우분투를 다시 깔고 첨부터 시도 해야하나요?

    • webnautes webnautes 2018.05.25 23:55 신고

      카메라를 바꾸어 볼 필요가 있을거 같습니다.

      VMware 상에 우분투를 설치한거 같던데..
      그래서 그런거 같기도 합니다.

    • 우분투초보 2018.05.28 09:41 신고

      답변을 빨리 못달아서 죄송합니다.

      우선 작성자님 말씀대로 VMware 상에 우분투를 설치를 해서 진행 했습니다.

      빠른답변과 해결법을 주셔서 감사합니다.

      Visual Studio로 다시 해볼 생각 입니다.

      궁금해서 질문 한개더 드립니다.
      혹시 VMware상에 하면 안되는 이유가 무엇인가요? 내장 카메라만 안되는건지
      아니면 웹켐을 따로 사야하는건지.

    • webnautes webnautes 2018.05.28 11:59 신고

      VMware가 물리적 하드웨어를 가상 머신에 설치된 우분투에서도 사용할 수 있게 해주지만..

      직접 피시에 설치한 우분투에서 동일한 하드웨어를 사용하는 것과 똑같이 동작하지 않는 경우가 있어서 그렇습니다.

      OpenCV를 사용한다면 처리 속도도 중요하기 때문에 상대적으로 느리게 동작할 수 밖에 없는 VMware는 피하는게 좋을 듯합니다.



  20. koo 2018.05.24 19:06 신고

    포스팅 잘 보았습니다.
    make -j4 명령 도중에 70%대 정도에서

    [ 69%] Built target opencv_dnn
    Scanning dependencies of target opencv_annotation
    [ 70%] Building CXX object apps/annotation/CMakeFiles/opencv_annotation.dir/opencv_annotation.cpp.o
    [ 70%] Linking CXX executable ../../bin/opencv_annotation
    /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libGL.so: undefined reference to `drmGetDevices2'
    /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libGL.so: undefined reference to `drmGetDevice2'
    collect2: error: ld returned 1 exit status
    apps/annotation/CMakeFiles/opencv_annotation.dir/build.make:101: 'bin/opencv_annotation' 타겟에 대한 명령이 실패했습니다
    make[2]: *** [bin/opencv_annotation] 오류 1
    CMakeFiles/Makefile2:8082: 'apps/annotation/CMakeFiles/opencv_annotation.dir/all' 타겟에 대한 명령이 실패했습니다
    make[1]: *** [apps/annotation/CMakeFiles/opencv_annotation.dir/all] 오류 2
    make[1]: *** 끝나지 않은 작업을 기다리고 있습니다....
    [ 70%] Building CXX object modules/features2d/CMakeFiles/opencv_features2d.dir/src/fast_score.cpp.o
    [ 71%] Building CXX object modules/features2d/CMakeFiles/opencv_features2d.dir/src/orb.cpp.o
    [ 71%] Building CXX object modules/features2d/CMakeFiles/opencv_features2d.dir/src/mser.cpp.o
    [ 71%] Building CXX object modules/features2d/CMakeFiles/opencv_features2d.dir/src/evaluation.cpp.o
    [ 71%] Building CXX object modules/features2d/CMakeFiles/opencv_features2d.dir/src/brisk.cpp.o
    [ 71%] Building CXX object modules/features2d/CMakeFiles/opencv_features2d.dir/src/draw.cpp.o
    [ 71%] Building CXX object modules/features2d/CMakeFiles/opencv_features2d.dir/src/gftt.cpp.o
    [ 71%] Building CXX object modules/features2d/CMakeFiles/opencv_features2d.dir/opencl_kernels_features2d.cpp.o
    [ 71%] Building CXX object modules/features2d/CMakeFiles/opencv_features2d.dir/src/fast.avx2.cpp.o
    [ 71%] Linking CXX shared library ../../lib/libopencv_features2d.so
    [ 71%] Built target opencv_features2d
    Makefile:160: 'all' 타겟에 대한 명령이 실패했습니다
    make: *** [all] 오류 2

    이런 명령이 뜨면서 완료가 되지 않습니다.
    무시하고 다음 명령인 sudo make install을 실행하면
    비슷한 오류가 나면서 100%까지 완료가 되질 않습니다.
    그 후에 opencv 버전 확인을 하면 opencv를 찾을수 없다고 나오고
    'pkg-config 명령이 /usr/local/lib/pkgconfig 경로에 있는 opencv.pc 파일을 찾을 수 있도록 해줘야 합니다.' 에 해당하는 명령을 써도 그대롭니다.
    실제로 /usr/local/lib에 pkgconfig 디렉터리가 생성조차 안되어있습니다..
    해결방법 부탁드립니다ㅜㅜ

    • webnautes webnautes 2018.05.25 11:26 신고

      그래픽 카드에서 지원하는 OpenGL 기능과 관련이 있어서..
      모델명과 libGL.so로 검색을 해봐야 할듯합니다.


      간단하게는 OpenGL을 사용하지 않도록 하면 해결될 듯합니다.

      -D WITH_OPENGL=OFF



      혹시 Jetson TX2를 위해 컴파일하는 거라면.. 아래 링크를 확인해보세요.

      https://devtalk.nvidia.com/default/topic/1007290/jetson-tx2/building-opencv-with-opengl-support-/post/5141945


  21. koo 2018.05.28 21:00 신고

    덕분에 opencv 설치까지 모두 마쳤습니다. 마지막에 나오는 facedetect예제를 실행시키려는데 오류가 나타납니다.

    ./facedetect: error while loading shared libraries: libopencv_highgui.so.3.4: cannot open shared object file: No such file or directory

    현재 제가 사용하고 있는 ARM보드가 Huins사의 I.MX6Q모델입니다. 카메라를 연결하였지만 오류는 여전히 나타났고 다른 예제들에도 같은 문구의 오류가 나타났습니다... 혹시 해결방법이 있는지 여쭤보고싶습니다.

    그리고 opencv를 설치하는 과정이 porting(포팅)이라는 과정과 같은 것인지도 궁금합니다.
    번거롭게 해드려서 죄송합니다...

    • webnautes webnautes 2018.05.28 21:31 신고

      프로그램 실행시 라이브러리 파일을 찾지 못하는 것 같습니다.

      아래 링크에 나오는 설명처럼 진행해보세요..

      https://github.com/GaoHongchen/DIPDemo/issues/1

      포팅은 특정 플랫폼을 위해 작성된 소스 코드를 다른 플랫폼에서 동작하도록 하는 작업인듯 싶습니다.


      윈도우용 프로그램을 리눅스용 프로그램으로 변경하는 것도 포팅이라 볼 수도 있어서..

      OpenCV를 특정 보드에서 동작하도록 하는 것도 포팅이라 볼 수 있을 듯합니다.


      ARM 보드 쪽에선

      보통 부트로더 소스 코드나 리눅스 소스 코드를 특정 ARM 보드에서 동작시키기 위해 하드웨어 스펙에 맞추어 코드를 변경하는 경우를 포팅이라 보는 듯합니다.

      같은 ARM 시피유를 사용하더라도 보드를 만드는 업체에 따라 다른 하드웨어 구성으로 설계하기 때문입니다.


      이런 맥락에서 본다면 OpenCV를 우분투/데비안 계열 리눅스를 사용하는 플랫폼에서 컴파일 하는 경우에는 포팅이라 부르기 애매한 듯합니다.

      피시(인텔 CPU)든 라즈베리파이(ARM CPU)든 우분투/데비안 계열 리눅스상에서는 코드 수정없이 컴파일하면 되서라고 봅니다.





+ Recent posts

티스토리 툴바