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



我用扩展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

确保安装了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

检查您的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。因此,这意味着即使构建成功(没有错误消息(,python模块也将不可用。

我不知道为什么在python环境正常的情况下会发生这种情况。

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

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

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

对我有效的整个构建命令是:

cmake -D CMAKE_BUILD_TYPE=RELEASE 
-D CMAKE_INSTALL_PREFIX=/usr/local 
-D INSTALL_PYTHON_EXAMPLES=ON 
-D INSTALL_C_EXAMPLES=OFF 
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.3.0/modules 
-D PYTHON_EXECUTABLE=/usr/bin/python 
-D PYTHON_INCLUDE_DIR=/usr/include/python2.7 
-D PYTHON_LIBRARY=/usr/lib/python2.7/config-x86_64-linux-gnu/libpython2.7.so 
-D BUILD_EXAMPLES=ON ..

我解决了这个问题,我希望下面的注释能帮助到一些人
我将首先描述问题发生时的情况。在我的设备上,我安装了python2.7和python3.6。我想用蟒蛇3.7。所以,我通过apt安装如下:

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

由于OpenCV需要python-dev版本,我还通过apt-install-python-dev安装了它。不幸的是,这就是问题所在。这与Python 3.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

最后,你应该得到一个单一的"。所以";文件对我来说,它被放在下面:
/usr/local/lib/python3.7/dist packages/cv2/python-3.7/cv2.cpython-37m-aarch64-linux-gnu.so

我认为您可以尝试在下载的OpenCV目录中找到cv2.so

我遇到了同样的问题,最终在中找到了它

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

当我试图解决这个问题时,我发现cv2.so可能是一些.so文件的集合。就好像你的版本是匹配的,即使你从别人的电脑上得到它也是可以的。

在较新版本的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

最新更新