我正在尝试在Ubuntu 16.04上安装OpenCV 3.2以及opencv_contrib中的模块。
但是,当我运行 sudo make install
命令时,我得到以下输出:
➜ 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
问题是我在尝试运行 make -j8
命令时遇到了几乎相同的错误,然后我将 OPENCV_TEST_DATA_PATH
环境变量添加到我的 ~/.bashrc
中并像这样~/.zshrc
文件:
export OPENCV_TEST_DATA_PATH=/home/denis/code/opencv_extra/testdata
我已经事先下载了opencv_extra存储库。错误消失了!我可以成功运行make -j8
命令。
运行make -j8
命令后,我尝试运行sudo make install
命令并得到您在上面看到的输出。
指定此环境变量:
➜ build echo $OPENCV_TEST_DATA_PATH
/home/denis/code/opencv_extra/testdata
所以,我不太确定我应该怎么做才能正确安装 OpenCV。
PS:这是我使用cmake
命令:
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 ..
你能帮我解决这个问题吗?
,所以错误指向opencv_contrib/modules/dnn/CMakeLists.txt
文件的第 84 行。我已经检查了它并试图注释掉整个Generating test data for Torch importer
的事情(查看下面提供的文件的末尾)。
然后我尝试再次运行sudo make install
,一切都像魅力一样工作。
不确定发生了什么以及Torch与OpenCV有什么关系,但是我确实在我的Ubuntu 16.04机器上安装了Torch7。不确定它是否以某种方式连接,但注释掉了这个东西有所帮助。
请务必注意,在Ubuntu 14.04
机器上执行完全相同的步骤(未安装 Torch7)时,根本不会出现错误。
以下是对我有用的opencv_contrib/modules/dnn/CMakeLists.txt
的内容:
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()