0

I am trying to install OpenCV 3.0 on my Ubuntu 16.04 (Xenial Xerus), but I always get the following errors. The test also checks for MATLAB. Does OpenCV require MATLAB?

-- Performing Test HAVE_CXX_WMISSING_PROTOTYPES - Failed
-- Performing Test HAVE_CXX_WSTRICT_PROTOTYPES - Failed
-- Performing Test HAVE_C_WSIGN_PROMO - Failed
-- Performing Test HAVE_C_WNO_DELETE_NON_VIRTUAL_DTOR - Failed
-- Performing Test HAVE_CXX_WNO_UNNAMED_TYPE_TEMPLATE_ARGS
-- Performing Test HAVE_CXX_WNO_UNNAMED_TYPE_TEMPLATE_ARGS - Failed
-- Performing Test HAVE_C_WNO_UNNAMED_TYPE_TEMPLATE_ARGS
-- Performing Test HAVE_C_WNO_UNNAMED_TYPE_TEMPLATE_ARGS - Failed
-- Performing Test HAVE_C_FVISIBILITY_INLINES_HIDDEN - Failed
-- Looking for /home/hanfei/anaconda2/include/libpng/png.h - not found
-- Performing Test HAVE_CXX_WNO_MISLEADING_INDENTATION - Failed


Checking for module 'gstreamer-base-1.0'
--   No package 'gstreamer-base-1.0' found
-- Checking for module 'gstreamer-video-1.0'
--   No package 'gstreamer-video-1.0' found
-- Checking for module 'gstreamer-app-1.0'
--   No package 'gstreamer-app-1.0' found
-- Checking for module 'gstreamer-riff-1.0'
--   No package 'gstreamer-riff-1.0' found
-- Checking for module 'gstreamer-pbutils-1.0'
--   No package 'gstreamer-pbutils-1.0' found
-- Checking for module 'gstreamer-base-0.10'
--   No package 'gstreamer-base-0.10' found
-- Checking for module 'gstreamer-video-0.10'
--   No package 'gstreamer-video-0.10' found
-- Checking for module 'gstreamer-app-0.10'
--   No package 'gstreamer-app-0.10' found
-- Checking for module 'gstreamer-riff-0.10'
--   No package 'gstreamer-riff-0.10' found
-- Checking for module 'gstreamer-pbutils-0.10'
--   No package 'gstreamer-pbutils-0.10' found
-- Checking for module 'libdc1394-2'
--   No package 'libdc1394-2' found
-- Checking for module 'libdc1394'
--   No package 'libdc1394' found
-- Looking for linux/videodev.h
-- Looking for linux/videodev.h - not found
-- Looking for linux/videodev2.h

-- Looking for sys/videoio.h - not found

Checking for module 'libavresample'
--   No package 'libavresample' found
-- Checking for module 'libgphoto2'
--   No package 'libgphoto2' found CMake Error at cmake/OpenCVFindIPP.cmake:243 (include):   include could not find load file:

Could not find OpenBLAS lib. Turning OpenBLAS_FOUND off
-- Could NOT find Atlas (missing:  Atlas_CLAPACK_INCLUDE_DIR)
-- Could NOT find Doxygen (missing:  DOXYGEN_EXECUTABLE)
- Could NOT find Matlab (missing:  MATLAB_MEX_SCRIPT MATLAB_INCLUDE_DIRS MATLAB_ROOT_DIR MATLAB_LIBRARIES MATLAB_LIBRARY_DIRS MATLAB_MEXEXT MATLAB_ARCH MATLAB_BIN)
-- VTK is not found. Please set -DVTK_DIR in CMake to VTK build directory, or to VTK install subdirectory with VTKConfig.cmake file
Sean
  • 1
  • 3

1 Answers1

2

No, it does not require MATLAB. You can use the library from C++ and Python and I think a few other languages too. I was more worried about Atlas and BLAS being missing. These are very important tuned linear algebra libraries that do things like Matrix-Vector products and Matrix factorizations and related operations.

I was worried that Atlas being missing would cause my code to run slow, if at all. So, I poked around and found the file opencv/cmake/OpenCVFindAtlas.cmake. Therein you will see:

 58 set(Atlas_INCLUDE_SEARCH_PATHS
 59   /usr/include/atlas
 60   /usr/include/atlas-base
 61   /usr/include
 62   $ENV{Atlas_ROOT_DIR}
 63   $ENV{Atlas_ROOT_DIR}/include
 64 )
 65 
 66 set(Atlas_LIB_SEARCH_PATHS
 67   /usr/lib/atlas
 68   /usr/lib/atlas-base
 69   $ENV{Atlas_ROOT_DIR} 
 70   $ENV{Atlas_ROOT_DIR}/lib
 71 )
 72 
 73 find_path(Atlas_CBLAS_INCLUDE_DIR   NAMES cblas.h   PATHS ${Atlas_INCLUDE_SEARCH_PATHS})
 74 find_path(Atlas_CLAPACK_INCLUDE_DIR NAMES lapacke.h PATHS ${Atlas_INCLUDE_SEARCH_PATHS})
 75 
 76 find_library(Atlas_CBLAS_LIBRARY NAMES  ptcblas_r ptcblas cblas_r cblas PATHS ${Atlas_LIB_SEARCH_PATHS})
 77 find_library(Atlas_BLAS_LIBRARY NAMES   atlas_r   atlas                 PATHS ${Atlas_LIB_SEARCH_PATHS})
 78 find_library(Atlas_LAPACK_LIBRARY NAMES lapack alapack_r alapack lapack_atlas  PATHS ${Atlas_LIB_SEARCH_PATHS})

Except you won't have what I do on line 61 - I added that. I went to the INCLUDE and LIB search paths and then looked for the headers and libraries it was looking for. I noticed that I didn't have atlas or lapack installed. So I installed lapack as described here. The I installed Atlas with

sudo apt-get install libatlas-base-dev

Then when I went to /usr/include I found a directory called atlas-base. Inside I found cblas.h. Unfortunately, lapacke.h wasn't there. That was in /usr/include. So, I added /usr/include to Atlas_INCLUDE_SEARCH_PATHS. Then for the libraries I just verified that at least one of the listed names was in the lib search path. Just note, in case you weren't aware, that libraries (lapack_atlas, for example) will be listed with a preceding 'lib'. So lapack_atlas would be liblapack_atlas.so.

To resolve all of the other errors you see, I would poke around to make sure that paths are set right. But you don't need MATLAB.