cmake 发现 Python3.4 而不是 Python3.5

cmake 发现 Python3.4 而不是 Python3.5

我正在尝试让 opencv 在 Ubuntu 16.04 上与 Python3.5 一起工作

我已按照此答案中的步骤操作: 如何在 Ubuntu 16.04 LTS 上为 Python 3.5 安装 OpenCV 3.1?

以及其中的链接。我还必须安装一些其他依赖项。

我的第一个问题是 cmake 一直找到 Python3.4 而不是 Python3.5。

--   Python 2:
--     Interpreter:                 /usr/bin/python2.7 (ver 2.7.11)
--     Libraries:                   /usr/lib/x86_64-linux-gnu/libpython2.7.so (ver 2.7.11+)
--     numpy:                       /usr/local/lib/python2.7/dist-packages/numpy/core/include (ver 1.11.1)
--     packages path:               lib/python2.7/dist-packages
-- 
--   Python 3:
--     Interpreter:                 /usr/bin/python3.4 (ver 3.4)
-- 

还提到了一些其他缺失的依赖项。我不知道它们有多重要。例如 Matlab:

--   Matlab:                        Matlab not found or implicitly disabled

还有 gtk+-3.0,尽管我以为我已经安装了它:

-- Checking for module 'gtk+-3.0'
--   No package 'gtk+-3.0' found

以及其他一些:

-- VTK is not found. Please set -DVTK_DIR in CMake to VTK build directory, or to VTK install subdirectory with VTKConfig.cmake file

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

我执行了 grep / sed 命令将 python3.4 修改为 3.5,并尝试了 make 和 make install,但仍然没有出现。

答案1

对所有这些问题的详细回答将占用太多的空间和精力,还需要有关每个包的附加信息。

但总的来说,策略是:

  1. 如果找不到包,请先确保您有它。例如,使用 检查dpkg -l "*libXXX*"。如果python,请使用 命令检查系统选择了哪个 python which python3。这并不意味着会找到同一个cmakecmake可以使用不同的搜索目录顺序),但很有可能。

  2. 如果您有它,但它不在标准路径中,只是没有找到或找到了不同的版本,您通常需要

    a)设置一些环境变量

    或者 b) 修改在源findXXX.cmake的“cmake”文件夹中找到的脚本OpenCV

    或 c) 修改 OpenCVCMakeLists.txt文件以手动设置所需的Cmake变量(findXXX通常会设置)。

  3. 上述操作比较简单cmake-qt-gui(如果没有,请安装)。然后当它发现错误时python,您只需使用 GUI 输入正确的路径即可。

  4. Matlab/VTK not found这不是一场灾难。您可以使用许多可选包进行构建。除非cmake实际上说,无法构建您需要的 OpenCV 模块没有它,或者除非你真的想要使用这个包(例如出于性能原因),您无需执行任何操作。哪些 OpenCV 模块需要哪些包以及使用某些可选包的优点是什么,您需要针对每个包单独找出答案。但是如果您想使用 Matlab 或 VTK 进行构建,则需要确保 cmake 能够找到它。因此,请阅读要点 1.、2.、3。

相关内容