当构建opencv时,找不到文件" cv2.so"

时间:2016-06-27 10:10:14

标签: opencv install beagleboneblack

我使用扩展SD卡(BeagleBone Black)在Debian系统中使用python2.7编译了OpenCV 3.0.0。

安装OpenCV后,似乎没有错误。 ' Lib'中有许多生成的文件。文件夹中。

这些文件的名称如下:

libopencv_core.so
libopencv_dataset.so
libopencv_imgproc.so ...

我找不到文件cv2.so,甚至搜索整个文件系统。

我已多次尝试过,但找不到cv2.so

谁知道原因?感谢。

make配置已检查,似乎正确无误:

sudo cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local -D

6 个答案:

答案 0 :(得分:4)

确保安装了numpy。没有numpy,cmake会说

--   Python 2:
--     Interpreter:                 /usr/bin/python2.7 (ver 2.7.12)
--     Libraries:                   NO
--     numpy:                       NO (Python wrappers can not be generated)
--     packages path:               lib/python2.7/dist-packages

安装numpy,它会说:

--   Python 2:
--     Interpreter:                 /usr/bin/python2.7 (ver 2.7.12)
--     Libraries:                   /usr/lib64/libpython2.7.so (ver 2.7.12)
--     numpy:                       /usr/local/lib/python2.7/dist-packages/numpy/core/include (ver 1.12.1)
--     packages path:               lib/python2.7/dist-packages

答案 1 :(得分:3)

检查你的cmake变量是否包含:

-D BUILD_NEW_PYTHON_SUPPORT=ON

-D BUILD_PYTHON_SUPPORT=ON

检查cmake是否显示消息:

variables were not used by the project: BUILD_NEW_PYTHON_SUPPORT BUILD_PYTHON_SUPPORT

如果这两个变量都没有使用,opencv将不会生成cv2.so,意味着即使构建成功(没有错误消息),python模块也无法使用。

我不知道为什么在python环境没问题的时候发生了这些事情。

答案 2 :(得分:3)

对我来说,解决方案如下:

  1. 如果版本中存在 CMakeCache.txt 文件,请将其删除 目录。
  2. 将以下标志(如果它们丢失)添加到构建命令中(如果系统上的路径不同,则可能需要更改路径):

    autoInvalidate <- reactiveTimer(120000)
    
  3. 对我有用的整个构建命令是:

    -D PYTHON_INCLUDE_DIR=/usr/include/python2.7
    -D PYTHON_LIBRARY=/usr/lib/python2.7/config-x86_64-linux-gnu/libpython2.7.so
    

答案 3 :(得分:0)

我想您可能会尝试在下载的OpenCV目录中找到cv2.so

我遇到了同样的问题,最后在

中找到了

dir = "./myopencv/opencv/build/lib"

当我尝试解决问题时,我发现cv2.so可能是某些.so文件的集合。好像您的版本匹配,即使您从其他计算机上获取它也没问题。

答案 4 :(得分:0)

在较新版本的opencv中,将cv2.so文件重命名为类似 cv2.build_information.so 的名称。因此,您有可能正在寻找错误的文件名。

因此,在使用python解释器构建opencv之后,请在 build / lib 内部检查相应的文件名。就我而言,cv2.so重命名为cv2.cpython-37m-x86_64-linux-gnu.so

build/lib/python3/
└── cv2.cpython-37m-x86_64-linux-gnu.so

答案 5 :(得分:0)

我解决了问题,希望以下说明对某人有所帮助。
我将首先描述问题发生时的情况。在我的设备上,我安装了python2.7和python3.6。我想使用python3.7。因此,我通过apt install进行了安装,如下所示:

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.7

由于OpenCV需要python-dev版本,因此我也通过 apt install python-dev 安装了它。不幸的是,这就是问题所在。这与Python3.6绑定。因为我告诉cmake使用Python3.7,所以cmake无法生成所需的opencv软件包,因为它找不到所需的头文件。
运行cmake时,如果看到“安装路径”为空,则可以确定您遇到了与我描述的相同的问题。示例:

--   Python 3:
--     Interpreter:                 /usr/bin/python3 (ver 3.7.8)
--     numpy:                       /usr/local/lib/python3.7/dist-packages/numpy/core/include (ver 1.19.0)
--     install path:                -
-- 
--   Python (for build):            /usr/bin/python3

它必须这样显示:

--     install path:                lib/python3.7/dist-packages/cv2/python-3.7

要解决此问题,请卸载python-dev并安装特定于python3.7的版本。示例:

sudo apt-get install python3.7-dev

最后,您应该获得一个“ .so”文件。对我来说,它放在以下位置:
/usr/local/lib/python3.7/dist-packages/cv2/python-3.7/cv2.cpython-37m-aarch64-linux-gnu.so