为什么OpenCV_FOUND设置为false?

时间:2017-04-13 19:17:14

标签: opencv cmake installation ubuntu-16.04

首先,我知道这个问题有太多重复,但在我的情况下都没有。

我在Ubuntu 16.04系统上安装了OpenCV 2.4.13.2。我按照此处列出的安装说明进行操作:http://www.pyimagesearch.com/2016/10/24/ubuntu-16-04-how-to-install-opencv/。根据其中提到的步骤#6,我可以确认OpenCV已成功安装。

但是,当我在构建此项目时尝试运行Average hourly latency for the month of April Hour | Average Latency ---- | --------------- 12AM | 123.4 1AM | 156.7 ... https://github.com/andrewssobral/vehicle_detection_haarcascades/时,我收到错误消息:

  

找到OpenCV Windows Pack,但它没有与您的二进制文件兼容     配置。

     

您应该手动将CMake变量OpenCV_DIR指向您的OpenCV构建     图书馆。   呼叫堆栈(最近一次呼叫):     CMakeLists.txt:5(find_package)

     

CMakeLists.txt的CMake错误:5(find_package):     找到包配置文件:

     

/home/abhishek/opencv-2.4.13.2/cmake/OpenCVConfig.cmake

     

但它将OpenCV_FOUND设置为FALSE,因此认为包“OpenCV”是     没找到。

     

- 配置不完整,发生错误!   另见“/home/abhishek/opencv-2.4.13.2/vehicle_detection_haarcascades/build/CMakeFiles/CMakeOutput.log”。

正如在其他SO答案中所提到的,我尝试删除缓存文件,重新安装,重新安装在不同的目录等,但它们都不起作用。那么,我该如何克服这个错误呢?我将在学术环境中使用这个车辆检测项目(主要在C ++中开发),我将非常感谢您的帮助!

4 个答案:

答案 0 :(得分:2)

有关何时以及如何OpenCV_FOUND设置为TRUEFALSE的一些背景信息。

注意OpenCVConfig.cmake的代码确实因OpenCV版本而异,但一般功能或多或少保持不变。我已经审核了版本3.2.0,并针对此答案对2.4.10版进行了交叉检查:

  1. 这些内容在find_package_handle_standard_args()

    OpenCVConfig.cmake来电中处理
    find_package_handle_standard_args(OpenCV REQUIRED_VARS OpenCV_INSTALL_PATH
                                      VERSION_VAR OpenCV_VERSION ${_OpenCV_FPHSA_ARGS})
    

    如果无法确定其中一个REQUIRED_VARS(未设置)或VERSION_VAR中给出的版本不匹配,则OpenCV_FOUND设置为FALSE

  2. 版本中,OpenCV_INSTALL_PATH直接放入CMake配置中:

    get_filename_component(OpenCV_INSTALL_PATH "${OpenCV_CONFIG_PATH}/@OpenCV_INSTALL_PATH_RELATIVE_CONFIGCMAKE@" REALPATH) 
    

    如果找到配置脚本本身,这不太可能失败。

    但请注意绝对路径可能位于生成的配置文件中。所以不要移动它或手动安装它。因此,您应该检查/home/abhishek/opencv-2.4.13.2/cmake/OpenCVConfig.cmake是否存在无效/不匹配的路径。

  3. 根据项目OpenCV_VERSION调用中find_package(OpenCV [version] ...)调用的内容检查version

    但是vehicle_detection_haarcascades/CMakeLists.txt没有指定特定版本:

    find_package(OpenCV REQUIRED)
    
  4. ${_OpenCV_FPHSA_ARGS}HANDLE_COMPONENTS放入CMake版本> = 2.8.8。这还会检查COMPONENTS来电中给出的find_package(OpenCV COMPONENTS ...)

    但这也不适用于此(见上文)。

  5. 如果find_package()调用没有找到必要的配置文件,那么OpenCV_FOUND调用本身可以将FALSE设置为FOLDER=folder100.000.$1 cd parent_folder/${FOLDER}

    但这似乎并非如此,因为您的错误命名了它找到配置脚本的路径。

  6. <强>参考

答案 1 :(得分:1)

由于您使用的是Ubuntu 16.04,您是否尝试过打包的OpenCV?我没有16.04方便,但检测工作正常15.10。

[zinc:~/q] lsb_release -sa
No LSB modules are available.
Ubuntu
Ubuntu 15.10
15.10
wily
[zinc:~/q] dpkg --get-selections cmake libopencv-dev
cmake                       install
libopencv-dev                   install
[zinc:~/q] cat CMakeLists.txt 
cmake_minimum_required(VERSION 3.7)

include(CMakePrintHelpers)
find_package(OpenCV REQUIRED)
cmake_print_variables(OpenCV_LIBS)
[zinc:~/q] cmake .
-- The C compiler identification is GNU 5.2.1
-- The CXX compiler identification is GNU 5.2.1
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- OpenCV_LIBS="opencv_videostab;opencv_video;opencv_ts;opencv_superres;opencv_stitching;opencv_photo;opencv_ocl;opencv_objdetect;opencv_ml;opencv_legacy;opencv_imgproc;opencv_highgui;opencv_gpu;opencv_flann;opencv_features2d;opencv_core;opencv_contrib;opencv_calib3d"
-- Configuring done
-- Generating done
-- Build files have been written to: /home/nega/q
[zinc:~/q] 

答案 2 :(得分:1)

如果一切顺利,直到第6步没有错误,我认为可能导致此错误显示的问题是您没有在虚拟环境中工作,所以我认为这应该有所帮助: 开放式终端 - &gt;类型:workon cv - &gt;执行cmake

答案 3 :(得分:0)

在几次浪费时间解决这个问题之后,我已经决定发布解决了我的问题以供将来参考,以防我在3个月后再次忘记。

假设OpenCV安装正确,我不需要手动设置$ OpenCV_FOUND,我也不需要触摸OpenCV安装文件夹中的任何文件(/home/.../opencv-3.1.0/ {build,cmake} /),我唯一需要做的就是:

  1. 在我的&#39; CMakeLists.txt&#39;中设置$ OpenCV_DIR来自set(OpenCV_DIR "/usr/local/share/OpenCV/")
    set(OpenCV_DIR "/home/.../opencv-3.1.0/build/")
  2. 删除&#39; build&#39;我正在开发的应用程序中的文件夹,创建一个新的&#39; build&#39;文件夹,并在其中运行cmake ..等。

    这个问题通常发生在我使用&#34; CMakeLists.txt&#34;包含FIND_PACKAGE( OpenCV REQUIRED )语句。