Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

"OPENCV_TEST_DATA_PATH environment variable was not specified" when installing OpenCV 3.2 with opencv_contib

I'm trying to install OpenCV 3.2 along with the modules from opencv_contrib on Ubuntu 16.04.

However, when I run the sudo make install command, I get the following output:

➜  build git:(master) sudo make install
-- Detected version of GNU GCC: 54 (504)
-- FP16: Feature disabled
-- Found ZLIB: /usr/lib64/libz.so (found suitable version "1.2.8", minimum required is "1.2.3") 
-- Found ZLIB: /usr/lib64/libz.so (found version "1.2.8") 
-- Looking for linux/videodev.h
-- Looking for linux/videodev.h - not found
-- Looking for linux/videodev2.h
-- Looking for linux/videodev2.h - found
-- Looking for sys/videoio.h
-- Looking for sys/videoio.h - not found
-- Checking for module 'libavresample'
--   No package 'libavresample' found
-- Checking for module 'libgphoto2'
--   No package 'libgphoto2' found
-- Found TBB: /usr/lib64/libtbb.so
-- found IPP (ICV version): 9.0.1 [9.0.1]
-- at: /home/denis/code/opencv/build/3rdparty/ippicv/ippicv_lnx
-- CUDA detected: 8.0
-- CUDA NVCC target flags: -gencode;arch=compute_20,code=sm_20;-gencode;arch=compute_30,code=sm_30;-gencode;arch=compute_35,code=sm_35;-gencode;arch=compute_37,code=sm_37;-gencode;arch=compute_50,code=sm_50;-gencode;arch=compute_52,code=sm_52;-gencode;arch=compute_60,code=sm_60;-gencode;arch=compute_61,code=sm_61;-D_FORCE_INLINES
-- LAPACK_IMPL: OpenBLAS, LAPACK_LIBRARIES: /opt/OpenBLAS/lib/libopenblas.so
-- 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
-- Caffe:   NO
-- Protobuf:   YES
-- Glog:   YES
-- freetype2:   YES
-- harfbuzz:    YES
-- Module opencv_sfm disabled because the following dependencies are not found: Eigen Glog/Gflags
-- Assume that non-module dependency is available: freetype (for module opencv_freetype)
-- Assume that non-module dependency is available: harfbuzz (for module opencv_freetype)
CMake Error at /home/denis/code/opencv_contrib/modules/dnn/CMakeLists.txt:84 (message):
  OPENCV_TEST_DATA_PATH environment variable was not specified


-- Configuring incomplete, errors occurred!
See also "/home/denis/code/opencv/build/CMakeFiles/CMakeOutput.log".
See also "/home/denis/code/opencv/build/CMakeFiles/CMakeError.log".
Makefile:10450: recipe for target 'cmake_check_build_system' failed
make: *** [cmake_check_build_system] Error 1

The thing is that I was getting pretty much the same error when trying to run the make -j8 command and then I've added the OPENCV_TEST_DATA_PATHenvironment variable to my ~/.bashrc and ~/.zshrc files like this:

export OPENCV_TEST_DATA_PATH=/home/denis/code/opencv_extra/testdata

I've downloaded the opencv_extra repo beforehand. And the error was gone! I could successfully run the make -j8 command.

Having run the make -j8 command, I then tried to run the sudo make install command and got the output you see above.

This environment variable is specified:

➜  build echo $OPENCV_TEST_DATA_PATH
/home/denis/code/opencv_extra/testdata

So, I'm not quite sure what should I do to install OpenCV correctly.

PS: here's the cmake command I used:

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D WITH_CUBLAS=ON -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules ..

Could you please help me to resolve that issue?

like image 447
Denis Yakovenko Avatar asked Oct 17 '22 19:10

Denis Yakovenko


1 Answers

Okay, so the error was pointing to the line 84 of the opencv_contrib/modules/dnn/CMakeLists.txt file. I've examined it and tried to comment out the whole Generating test data for Torch importer thing (look at the end of the file provided below).

Then I've tried to run sudo make install again and everything worked like a charm.

I'm not sure what was happening and what Torch has to do with OpenCV, however I do have Torch7 installed on my Ubuntu 16.04 machine. Not sure if it is somehow connected or not, but commenting the thing out helped.

Important to note that when doing the exact same steps on the Ubuntu 14.04 machine (without Torch7 installed), the error did not appear at all.


Below is the content of the opencv_contrib/modules/dnn/CMakeLists.txt that worked for me:

cmake_minimum_required(VERSION 2.8)

if(APPLE_FRAMEWORK OR WINRT
    OR AARCH64 # protobuf doesn't know this platform
)
  ocv_module_disable(dnn)
endif()

set(the_description "Deep neural network module. It allows to load models from different frameworks and to make forward pass")
set(OPENCV_MODULE_IS_PART_OF_WORLD OFF)

ocv_add_module(dnn opencv_core opencv_imgproc WRAP python matlab)
ocv_warnings_disable(CMAKE_CXX_FLAGS -Wno-shadow -Wno-parentheses -Wmaybe-uninitialized -Wsign-promo
                                     -Wmissing-declarations -Wmissing-prototypes
)
ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4701 /wd4100)

if(MSVC)
  add_definitions( -D_CRT_SECURE_NO_WARNINGS=1 )
  ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4244 /wd4267 /wd4018 /wd4355 /wd4800 /wd4251 /wd4996 /wd4146
                                       /wd4305 /wd4127 /wd4100 /wd4512 /wd4125 /wd4389 /wd4510 /wd4610
                                       /wd4702 /wd4456 /wd4457 /wd4065 /wd4310 /wd4661 /wd4506
  )
else()
  ocv_warnings_disable(CMAKE_CXX_FLAGS -Wno-deprecated -Wmissing-prototypes -Wmissing-declarations -Wshadow
                                       -Wunused-parameter -Wunused-local-typedefs -Wsign-compare -Wsign-promo
                                       -Wundef -Wtautological-undefined-compare -Wignored-qualifiers -Wextra
                                       -Wunused-function -Wunused-const-variable -Wdeprecated-declarations
  )
endif()

if(ANDROID)
  add_definitions(-DDISABLE_POSIX_MEMALIGN -DTH_DISABLE_HEAP_TRACKING)
endif()

# ----------------------------------------------------------------------------
# Resolve libprotobuf dependency
# ----------------------------------------------------------------------------
include(cmake/OpenCVFindLibProtobuf.cmake)
ocv_source_group("Src\\protobuf" FILES ${PROTOBUF_SRCS} ${PROTOBUF_HDRS})
ocv_module_include_directories(include ${PROTOBUF_INCLUDE_DIR})

ocv_glob_module_sources(${PROTOBUF_SRCS} ${PROTOBUF_HDRS} ${CBLAS_H_PROXY_PATH})
ocv_create_module(${PROTOBUF_LIBRARIES})
ocv_add_samples()
ocv_add_accuracy_tests()
ocv_add_perf_tests()

# ----------------------------------------------------------------------------
# Download pre-trained models for complex testing on GoogLeNet and AlexNet
# ----------------------------------------------------------------------------
OCV_OPTION(${the_module}_DOWNLOAD_CAFFE_MODELS "Use GoogLeNet Caffe model for testing" OFF IF BUILD_TESTS AND DEFINED ENV{OPENCV_TEST_DATA_PATH})
if(BUILD_TESTS AND DEFINED ENV{OPENCV_TEST_DATA_PATH} AND (DOWNLOAD_EXTERNAL_TEST_DATA OR ${the_module}_DOWNLOAD_CAFFE_MODELS))
    add_custom_command( TARGET opencv_test_${name} POST_BUILD
                        COMMAND ${CMAKE_COMMAND} -Dmodel=GoogleNet -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/download_model.cmake)
    add_definitions(-DENABLE_CAFFE_MODEL_TESTS=1)
endif()

# ----------------------------------------------------------------------------
# Torch7 importer of blobs and models, produced by Torch.nn module
# ----------------------------------------------------------------------------
OCV_OPTION(${the_module}_BUILD_TORCH_IMPORTER "Build Torch model importer" ON)
if(${the_module}_BUILD_TORCH_IMPORTER)
    add_definitions(-DENABLE_TORCH_IMPORTER=1)
    ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4702 /wd4127 /wd4267) #supress warnings in original torch files

    if(NOT DEFINED HAVE_TORCH_EXE)
        execute_process(COMMAND th ${CMAKE_CURRENT_SOURCE_DIR}/testdata/dnn/torch/torch_nn_echo.lua RESULT_VARIABLE TORCH_EXE_STATUS)
        set(HAVE_TORCH_EXE OFF)
        if(${TORCH_EXE_STATUS} EQUAL 0)
            set(HAVE_TORCH_EXE ON)
        endif()
        set(HAVE_TORCH_EXE ${HAVE_TORCH_EXE} CACHE INTERNAL "Have torch binary")
    endif()
endif()

# ----------------------------------------------------------------------------
# Generating test data for Torch importer
# ----------------------------------------------------------------------------
# OCV_OPTION(${the_module}_BUILD_TORCH_TESTS "Build Torch tests (installed torch7 with nn module is required)" ON IF BUILD_TESTS AND ${the_module}_BUILD_TORCH_IMPORTER AND HAVE_TORCH_EXE)
# if(${the_module}_BUILD_TORCH_TESTS)
# 
#     if(NOT DEFINED ENV{OPENCV_TEST_DATA_PATH})
#         message(FATAL_ERROR "OPENCV_TEST_DATA_PATH environment variable was not specified")
#     endif()
# 
#     if(NOT HAVE_TORCH_EXE)
#         message(FATAL_ERROR "Torch executable \"th\" not found or nn module not found")
#     endif()
# 
#     add_custom_command( TARGET opencv_test_${name} POST_BUILD
#                         COMMAND th ${CMAKE_CURRENT_SOURCE_DIR}/testdata/dnn/torch/torch_gen_test_data.lua
#                         WORKING_DIRECTORY  $ENV{OPENCV_TEST_DATA_PATH}/dnn/torch )
#     add_definitions(-DENABLE_TORCH_TESTS=1)
# endif()
like image 133
Denis Yakovenko Avatar answered Oct 21 '22 08:10

Denis Yakovenko