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. 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로도 테스트 해 볼 필요가 있을듯 합니다..

  3. 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 디렉토리가 존재합니다.

  4. 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

  5. 초보 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

  6. gomingomin 2018.05.21 21:04 신고

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

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

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

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

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

    • webnautes webnautes 2018.05.22 18:18 신고

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

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

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


  7. 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로 바꾸어 보세요..

  8. 우분투초보 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는 피하는게 좋을 듯합니다.



  9. 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


  10. 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)든 우분투/데비안 계열 리눅스상에서는 코드 수정없이 컴파일하면 되서라고 봅니다.





  11. fkfnk 2018.06.20 21:49 신고


    /usr/bin/ld: /usr/local/lib/libavformat.a(allformats.o): relocation R_X86_64_32 against `ff_a64_muxer' can not be used when making a shared object; recompile with -fPIC
    /usr/local/lib/libavformat.a: error adding symbols: Bad value
    collect2: error: ld returned 1 exit status
    modules/videoio/CMakeFiles/opencv_videoio.dir/build.make:283: recipe for target 'lib/libopencv_videoio.so.3.4.0' failed
    make[2]: *** [lib/libopencv_videoio.so.3.4.0] Error 1
    CMakeFiles/Makefile2:4463: recipe for target 'modules/videoio/CMakeFiles/opencv_videoio.dir/all' failed
    make[1]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/all] Error 2
    make[1]: *** Waiting for unfinished jobs....

    [ 63%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/eltwise_layer.cpp.o
    [ 63%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/max_unpooling_layer.cpp.o
    [ 63%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/detection_output_layer.cpp.o
    [ 63%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/split_layer.cpp.o
    [ 63%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/shift_layer.cpp.o
    [ 63%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/pooling_layer.cpp.o
    [ 63%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/permute_layer.cpp.o
    [ 63%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/blank_layer.cpp.o
    [ 63%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/mvn_layer.cpp.o
    [ 63%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/fully_connected_layer.cpp.o
    [ 64%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/padding_layer.cpp.o
    [ 64%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/scale_layer.cpp.o
    [ 64%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/reorg_layer.cpp.o
    [ 64%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/recurrent_layers.cpp.o
    [ 64%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/normalize_bbox_layer.cpp.o
    [ 64%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/proposal_layer.cpp.o
    [ 64%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/lrn_layer.cpp.o
    [ 64%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/resize_nearest_neighbor_layer.cpp.o
    [ 64%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/crop_layer.cpp.o
    [ 64%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/concat_layer.cpp.o
    [ 64%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/convolution_layer.cpp.o
    [ 64%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/flatten_layer.cpp.o
    [ 65%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/region_layer.cpp.o
    [ 65%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/layers_common.cpp.o
    [ 65%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/softmax_layer.cpp.o
    [ 65%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/reshape_layer.cpp.o
    [ 65%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/nms.cpp.o
    [ 65%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/tensorflow/tf_io.cpp.o
    [ 65%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/tensorflow/tf_importer.cpp.o
    [ 65%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/ocl4dnn/src/common.cpp.o
    [ 65%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/ocl4dnn/src/ocl4dnn_lrn.cpp.o
    [ 65%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/ocl4dnn/src/ocl4dnn_inner_product.cpp.o
    [ 65%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/ocl4dnn/src/ocl4dnn_pool.cpp.o
    [ 66%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/ocl4dnn/src/ocl4dnn_softmax.cpp.o
    [ 66%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/ocl4dnn/src/math_functions.cpp.o
    [ 66%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/ocl4dnn/src/ocl4dnn_conv_spatial.cpp.o
    [ 66%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/torch/torch_importer.cpp.o
    [ 66%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/torch/THDiskFile.cpp.o
    [ 66%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/torch/THGeneral.cpp.o
    [ 66%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/torch/THFile.cpp.o
    [ 66%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/dnn.cpp.o
    [ 66%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/halide_scheduler.cpp.o
    [ 66%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/darknet/darknet_importer.cpp.o
    [ 66%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/darknet/darknet_io.cpp.o
    [ 66%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/op_halide.cpp.o
    [ 67%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/init.cpp.o
    [ 67%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/caffe/caffe_shrinker.cpp.o
    [ 67%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/caffe/caffe_importer.cpp.o
    [ 67%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/caffe/caffe_io.cpp.o
    [ 67%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/opencl_kernels_dnn.cpp.o
    [ 67%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/layers/layers_common.avx.cpp.o
    [ 67%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/layers/layers_common.avx2.cpp.o
    [ 67%] Linking CXX shared library ../../lib/libopencv_dnn.so
    [ 67%] Built target opencv_dnn
    Makefile:160: recipe for target 'all' failed
    make: *** [all] Error 2
    open@lattepanda:~/opencv/opencv-3.4.0/build$
    혹시 이렇게 오류가 뜨는데 어떻게 해야할까요?? ㅠㅠㅠ

  12. fkfnk 2018.06.21 10:47 신고

    답변해주셔서 감사합니다 말씀해주신데로 -D WITH_FFMPEG=OFF \ 요렇게 옵션을 변경하였더니
    CMake Error: The source directory "/home/open/opencv" does not appear to contain CMakeLists.txt.
    Specify --help for usage, or press the help button on the CMake GUI.
    요런 에러가 뜨네요..

    • webnautes webnautes 2018.06.21 11:11 신고

      입력하실 때 실수하신 듯 보입니다.
      혹시 모르니 아래를 복사해서 포스팅처럼 build 디렉토리를 생성해서 그 안에서 해보세요..

      $ cmake -D CMAKE_BUILD_TYPE=RELEASE \
      -D CMAKE_INSTALL_PREFIX=/usr/local \
      -D WITH_TBB=OFF \
      -D WITH_IPP=OFF \
      -D WITH_1394=OFF \
      -D BUILD_WITH_DEBUG_INFO=OFF \
      -D BUILD_DOCS=OFF \
      -D INSTALL_C_EXAMPLES=ON \
      -D INSTALL_PYTHON_EXAMPLES=ON \
      -D BUILD_EXAMPLES=OFF \
      -D BUILD_TESTS=OFF \
      -D BUILD_PERF_TESTS=OFF \
      -D 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=OFF \
      -D WITH_XINE=ON \
      -D BUILD_NEW_PYTHON_SUPPORT=ON \
      ../

  13. fkfnk 2018.06.21 14:24 신고

    감사합니다 ㅠㅠ 다 해결됬어요 근데 예제코드 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
    이렇게 실행을 하니 ./facedetect: error while loading shared libraries: libopencv_highgui.so.3.4: cannot open shared object file: No such file or directory
    이렇게 에러가 나네요 ㅠㅠ 마지막으로 부탁드립니다

  14. yu 2018.06.21 15:38 신고

    질문 사항 한가지 드립니다..
    cmake 완료 후 make -j4 명령어를 사용 중 다음과 같은 error 메세지가 발생 하고 있습니다..

    혹시 해결 가능 한 부분 있을까요..
    내용은 다음과 같습니다.

    [ 44%] Building CXX object modules/core/CMakeFiles/opencv_core.dir/src/convert.sse4_1.cpp.o
    [ 44%] Building CXX object modules/core/CMakeFiles/opencv_core.dir/stat.sse4_2.cpp.o
    [ 44%] Building CXX object modules/core/CMakeFiles/opencv_core.dir/src/convert.fp16.cpp.o
    [ 44%] Building CXX object modules/core/CMakeFiles/opencv_core.dir/mathfuncs_core.avx.cpp.o
    [ 44%] Building CXX object modules/core/CMakeFiles/opencv_core.dir/src/convert.avx2.cpp.o
    [ 44%] Building CXX object modules/core/CMakeFiles/opencv_core.dir/mathfuncs_core.avx2.cpp.o
    make[2]: *** No rule to make target '/usr/lib/x86_64-linux-gnu/libGL.so', needed by 'lib/libopencv_core.so.3.4.0'. Stop.
    make[2]: *** Waiting for unfinished jobs....
    [ 44%] Building CXX object modules/core/CMakeFiles/opencv_core.dir/stat.avx2.cpp.o
    CMakeFiles/Makefile2:2143: recipe for target 'modules/core/CMakeFiles/opencv_core.dir/all' failed
    make[1]: *** [modules/core/CMakeFiles/opencv_core.dir/all] Error 2
    Makefile:160: recipe for target 'all' failed
    make: *** [all] Error 2

  15. fkfnk 2018.06.21 16:35 신고

    전에 동일증상에 답변해주셨던걸로 해결하였습니다.
    덕분에 막혔던 부분을 수월하게 해결하여 무리없이 프로젝트 시작할수있게되었습니다 정말 감사합니다

  16. fkfnk 2018.06.22 19:36 신고

    게시글하고 상관 없는 질문인데 혹시 하나만더 여쭈어봐도 될까요?? 제가 리눅스환경에서 작업을하는데 윈도우 환경에서 작업한 코드를 리눅스에서 돌릴려고 하니깐 에러가 자꾸 나네요 ㅠㅠ 구글링을 해봐도 한계가있어서 혹시나 하는 마음에 남겨봅니다
    #include <stdlib.h>
    #include <stdio.h>
    #include <cv.h>
    #include "opencv2/opencv.hpp"
    #include "opencv2/highgui.hpp"

    int sub_image(IplImage*img1, IplImage*img2, IplImage*dst);

    int main()

    {
    IplImage * image;

    CvCapture* capture;

    capture = cvCaptureFromCAM(0);

    image = cvQueryFrame(capture);

    int cnt=0;

    char name[10] ;

    char buffer[40] ;

    int BYTE =0;

    IplImage * temp= cvCreateImage(cvGetSize(image), 8, 3);

    IplImage * dst= cvCreateImage(cvGetSize(image), 8, 3);


    while(1)
    {

    image = cvQueryFrame(capture);

    //CvCapture 로부터 프레임을 얻어 image 라는 IplImage객체에 넣습니다.


    if( sub_image(image, temp, dst) == 1) //sub_image를 호출하여 리턴값이 1이면 실행

    {

    cnt++; //매 프레임마다 카운트하여 이 카운트를 파일명에 넣습니다.

    // itoa(cnt, name, 10);//저장되는사진이름은1,2,3,식으로카운트번호

    sprintf(buffer,"C:\\cctv\\%s.jpg",name);

    cvSaveImage(buffer,image); //지정된 파일명으로 저장합니다.

    }


    cvCopy(image, temp); //if문에 걸리지 않더라도 매 프레임을 temp에 저장합니다.

    //while문이 다시 돌때 새로들어온 프레임인 image와 이전프레임인 temp와의 차를

    //구하게 하려는 의도입니다.

    cvShowImage("show",image);

    cvShowImage("cha",dst);


    if(cvWaitKey(10)== 'p')

    break;




    }
    cvReleaseCapture(&capture); //메모리해제

    cvReleaseImage(&image);

    cvReleaseImage(&dst);

    cvReleaseImage(&temp);

    cvDestroyAllWindows();


    }


    int sub_image(IplImage*img1, IplImage*img2, IplImage*dst) //차영상을 구하는 소스입니다

    // RGB 기반으로 단순히 이전프레임과 현재프레임의 각 픽셀의 R,G,B 각각이 40이상씩 모두 차이나면

    //화면에 변화가 생겼다고 가정(기준을 정하여) 조건에 맞으면 return 1을 합니다.

    {

    int value1, value2, value3;

    int cnt=0;

    int BYTE =0;

    int imag1;



    // 한프레임내의 픽셀을 도는 2중 for문
    for(int x=0; x<img1->height;x++) //이미지차연산

    {

    for(int y=0; y <img1->width;y++)
    {

    value1 = abs(((BYTE)img1->imageData[x*img1->widthStep+ 3*y ]) - ((BYTE)img2->imageData[x*img2->widthStep + 3*y]) ) ;

    value2 = abs(((BYTE)img1->imageData[x*img1->widthStep+ 3*y + 1]) - ((BYTE)img2->imageData[x*img2->widthStep + 3*y]+1 ) ) ;


    value3 = abs(((BYTE)img1->imageData[x*img1->widthStep+ 3*y + 2]) - ((BYTE)img2->imageData[x*img2->widthStep + 3*y]+ 2) ) ;


    //한 프레임내에서 R,G,B모두 40이상의 색상차이를 보이면 이 수를 카운트해서(cnt++)

    //한프레임 내에서 총 몇개의 픽셀이 변화를 일으켰는지 셉니다.

    if(value1>40&& value2>40 && value3>40) // RGB 가모두40이상차이날경우

    {

    dst->imageData[x*dst->widthStep + 3*y+ 0] = (BYTE)img1->imageData[x*img1->widthStep+ 3*y + 0];

    dst->imageData[x*dst->widthStep + 3*y+ 1] = (BYTE)img1->imageData[x*img1->widthStep+ 3*y + 1];

    dst->imageData[x*dst->widthStep + 3*y+ 2] = (BYTE)img1->imageData[x*img1->widthStep+ 3*y + 2];



    cnt++; //카운트함

    }

    //그 외에 40이상 차이나지 않는 픽셀의 경우엔 0으로 채워서 검은색으로 만들어

    //화면에 보여줄때 차이를 분명히 하기위해서입니다. 단순히 보는사람입장에서 생각하는거라 파일로 저장화하는데 관련이 없으므로 지워도 무>방합니다.

    else

    {

    dst->imageData[x*dst->widthStep + 3*y+ 0] = 0;

    dst->imageData[x*dst->widthStep + 3*y+ 1] = 0;

    dst->imageData[x*dst->widthStep + 3*y+ 2] = 0;

    }

    }

    }



    //한 프레임을 2중for문으로 싹 돌고나서 누적된 카운트수를 세서 300개 이상(임의의 기준)

    // 일 경우 이 장면에 뭔가 새로운게 들어왔다고 가정하고 return 1을 합니다.

    if(cnt>300) //영상1프레임내에서변화가있는픽셀이300개이상일경우리턴1

    return 1;



    //그외에는 0을 리턴합니다.

    return 0;
    }
    코드를 보면 c++은 맞는데 리눅스에서 컴파일이 자꾸 에러가 나네요.
    몇개는 잡아냈는데 이 에러는 안잡히네요. 한번만 봐주시면 감사하겠습니다
    test.cpp: In function ‘int sub_image(IplImage*, IplImage*, IplImage*)’:
    test.cpp:139:44: error: expected ‘)’ before ‘img1’
    value1 = abs(((BYTE)img1->imageData[x*img1->widthStep+ 3*y ]) - ((BYTE)img2->imageData[x*img2->widthStep +
    ^
    test.cpp:139:139: error: expected ‘)’ before ‘;’ token
    value1 = abs(((BYTE)img1->imageData[x*img1->widthStep+ 3*y ]) - ((BYTE)img2->imageData[x*img2->widthStep + 3*y]) ) ;

    test.cpp:141:44: error: expected ‘)’ before ‘img1’
    value2 = abs(((BYTE)img1->imageData[x*img1->widthStep+ 3*y + 1]) - ((BYTE)img2->imageData[x*img2->widthSte
    ^
    test.cpp:141:145: error: expected ‘)’ before ‘;’ token
    value2 = abs(((BYTE)img1->imageData[x*img1->widthStep+ 3*y + 1]) - ((BYTE)img2->imageData[x*img2->widthStep + 3*y]+1 ) ) ;

    test.cpp:144:44: error: expected ‘)’ before ‘img1’
    value3 = abs(((BYTE)img1->imageData[x*img1->widthStep+ 3*y + 2]) - ((BYTE)img2->imageData[x*img2->widthSte
    ^
    test.cpp:144:145: error: expected ‘)’ before ‘;’ token
    value3 = abs(((BYTE)img1->imageData[x*img1->widthStep+ 3*y + 2]) - ((BYTE)img2->imageData[x*img2->widthStep + 3*y]+ 2) ) ;

    test.cpp:160:63: error: expected ‘;’ before ‘img1’
    dst->imageData[x*dst->widthStep + 3*y+ 0] = (BYTE)img1->imageData[x*img1->widthStep+ 3*y + 0];
    ^
    test.cpp:162:61: error: expected ‘;’ before ‘img1’
    dst->imageData[x*dst->widthStep + 3*y+ 1] = (BYTE)img1->imageData[x*img1->widthStep+ 3*y + 1];
    ^
    test.cpp:164:60: error: expected ‘;’ before ‘img1’
    dst->imageData[x*dst->widthStep + 3*y+ 2] = (BYTE)img1->imageData[x*img1->widthStep+ 3*y + 2];

    • webnautes webnautes 2018.06.22 20:15 신고

      주요 코드가 OpenCV 2.4 버전 코드라서 에러가 나는 걸로 보입니다.

      OpenCV 3.0 이상에서는 iplimage 구조체 대신에 Mat 클래스를 사용하는 걸로 알고 있습니다.

    • webnautes webnautes 2018.06.22 20:17 신고

      현재 에러는 괄호 안맞아서 인듯 싶기도 하네요. 확인해 볼께요

    • webnautes webnautes 2018.06.22 20:44 신고

      OpenCV 3.x 라이브러리에 OpenCV 2.x 라이브러리가 포함된걸 알고 있었지만..

      코드가 두 버전을 섞어 사용했는데도
      컴파일도 문제 없이 되는 군요...


      1. 우선 올려주신 코드에서 다음 줄을 주석처리하거나 제거하세요. 두 군데 있습니다.

      int BYTE =0;


      2. 그 다음 리눅스에는 없는 타입인 BYTE를 unsigned char로 바꾸어 줘야 합니다.

      cv.h 헤더 파일 위치도 문제가 있어서 바꾸어 놓고 필요없는 헤더파일을 제거합니다.

      결과적으로 sub_image 함수 선언 앞쪽에 다음 세 줄만 남습니다.

      #include "opencv/cv.h"
      #include "opencv2/opencv.hpp"


      typedef unsigned char BYTE;



      int sub_image(IplImage*img1, IplImage*img2, IplImage*dst);

    • webnautes webnautes 2018.06.22 20:47 신고

      그리고 코드 작성시 다음 포스팅 내용으로 해보세요..

      에러가 직관적으로 바로 보입니다.


      Ubuntu 18.04에서 Sublime Text 3를 사용하여 OpenCV 개발환경 만들기

      http://webnautes.tistory.com/1187


      아직 확인은 못해봤지만... Ubuntu 16.04에서도 거의 동일하게 동작할듯합니다.

  17. 초보 2018.07.09 11:25 신고

    파이썬에서 예제를 하나 실행해보려 했더니
    ImportError: No module named 'cv2' 오류가 발생하였습니다.
    빌드 과정에서 Python 2의 Interpreter, Libraries, numpy, packages path는 모두 정상적으로 출력되었습니다.
    (다만 /usr/local/lib/python2.7/site-packages 폴더가 비어있고, /usr/local/lib/python3.5/site-packages 폴더는 아예 존재하지 않았습니다.)
    혹시 opencv 설치가 제대로 되지 않은건가 하여, 덮어쓰기식으로 또 다시 설치를 해보고자 하였습니다.
    (물론 opencv, python이 설치되었는지 확인해보았는데, 버전을 정상적으로 출력하였기에, 설치가 된 것으로 생각하고 있습니다만...)
    그런데, 컴파일을 하려 했더니
    Makefile:160: recipe for target 'all' failed
    make: *** [all] Error 2
    이라는 오류가 발생하였습니다.
    -D WITH_OPENGL=OFF
    로 빌드하고 컴파일하려해도 역시나 동일한 오류가 발생하였습니다.
    opencv 셋팅하는게 정말 어렵네요... 가이드대로 설치해도 오류가 발생하니... 우분투를 몇번이나 재설치했는지 모르겠습니다.
    해결책을 알려주시면 감사하겠습니다.

    • 초보 2018.07.09 13:56 신고

      Pycharm에서는 안 되었는데, 터미널 상에서는 실행에 성공하였습니다. Pycharm의 문제인 것 같은데... 아무튼 해결책은 모르지만, OpenCV가 제대로 설치된 것은 확인하였습니다. 감사합니다!

    • webnautes webnautes 2018.07.09 14:02 신고

      답변이 늦었네요..

      PyCharm에서 가상환경이 디폴트로 되어 있어서 생기는 문제입니다.

      다음 포스팅의 3번대로 실제 우분투에 설치되어 있는 python을 사용하도록 해보세요..

  18. kimjinwoo 2018.07.15 09:56 신고

    /usr/bin/ld: out of memory allocating 1633836916 bytes after a total of 1892352 bytes
    collect2: error: ld returned 1 exit status
    modules/features2d/CMakeFiles/opencv_features2d.dir/build.make:710: 'lib/libopencv_features2d.so.3.3.0' 타겟에 대한 명령이 실패했습니다
    make[2]: *** [lib/libopencv_features2d.so.3.3.0] 오류 1
    CMakeFiles/Makefile2:10816: 'modules/features2d/CMakeFiles/opencv_features2d.dir/all' 타겟에 대한 명령이 실패했습니다
    make[1]: *** [modules/features2d/CMakeFiles/opencv_features2d.dir/all] 오류 2
    Makefile:160: 'all' 타겟에 대한 명령이 실패했습니다
    make: *** [all] 오류 2
    I have tihs problom so can you help me out?
    if you have chance, you write in korean
    now I cannot write korean only in English

    • webnautes webnautes 2018.07.15 10:00 신고

      혹시 PC아닌 가요?
      아래 링크에 나온것처럼 Swap 을 늘려보세요.

      https://www.pyimagesearch.com/2017/10/09/optimizing-opencv-on-the-raspberry-pi/

  19. 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에 관한 항목이 전혀 나오지 않았는데 그냥 진행한 것이 문제일 것 같다는 생각이 드는데...
    혹시 해결책 생각 나시는게 있으시면 정중히 의견 여쭙겠습니다... 감사합니다.

    • webnautes webnautes 2018.07.25 00:22 신고

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

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

  20. 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 에 대한 내용은 출력되지 않습니다.

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

    • 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/

  21. 쩜쩜쩜 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


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

+ Recent posts

티스토리 툴바