我用扩展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环境正常的情况下会发生这种情况。
对我来说,解决方案如下:
- 如果内部版本中存在CMakeCache.txt文件,请删除该文件目录
-
将以下标志(如果缺失(添加到构建命令中(如果系统上的路径不同,则可能需要更改路径(:
-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