OpenCV 3.4从源代码构建-CV2.so未生成-Ubuntu 16.04

6rqinv9w  于 2022-12-19  发布在  其他
关注(0)|答案(3)|浏览(147)

这不是我第一次构建opencv,但是,我不确定为什么没有生成cv2.so。我使用anaconda,下面是我的cmake行:

cmake -D CMAKE_INSTALL_PREFIX=../output -D PYTHON_EXECUTABLE=/home/b.safwat/anaconda2/envs/opencv3.4/bin/python WITH_FFMPEG=YES -enable-shared --disable-static -D BUILD_NEW_PYTHON_SUPPORT=ON ..

输出没有显示numpy,我怀疑这部分:

--   Python (for build):  
     /home/<user>/anaconda2/envs/<myenv>/bin/python3
--     Pylint:                      
      /home/<user>/anaconda2/bin/pylint (ver: 1.6.4, checks: 113)

不过,我有numpy安装和运作正常。
有人成功构建了最新版本吗?他们更改了cv2.so库的名称吗?

blpfk2vs

blpfk2vs1#

我在生成Python 2.7绑定时遇到了同样的问题。通过手动检查opencv/CMakeLists.txt文件找到了解决方案。我认为为Python 3转置变量可能会解决您的问题。

症状

在开始构建opencv之前,您可以通过检查cmake命令输出中包含To be builtUnavailable的行来判断是否将获得python绑定文件cv2.so

Unavailable: cnn_3dobj cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev cvv dnn_modern hdf java matlab ovis python2 python3 sfm viz

请注意python2python3是如何在末尾立即显示为不可用的。

修复(如果需要,为python3修改python 2引用)

CMakeLists.txt中有一行包含

BUILD_opencv_python2

在它的旁边是一堆生成cmake命令输出的行,它们很有用,因为它们告知了cmake需要哪些变量,特别是,numpy的引用对于构建python绑定是必需的,从这些行中,我了解到对于opencv 3.4.1,我必须使用以下命令来调用cmake:

-D PYTHON2_NUMPY_INCLUDE_DIRS=/usr/lib/python2.7/dist-packages/numpy/core/include
-D PYTHON2_NUMPY_VERSION=1.12.1

我可以从你的命令中看到你使用了过时的BUILD_NEW_PYTHON_SUPPORT标志。对于opencv 3.4,标志名已经改变,根据CMakeLists.txt的内容,新的变量名是:

-D BUILD_opencv_python3=ON

我还在另一个SO注解中读到,如果没有以下标志(未测试),将不会生成cv2.so

-D BUILD_EXAMPLES=ON

靶区;DR

对命令的编辑:

  • 移除:-D BUILD_NEW_PYTHON_SUPPORT=ON
  • 加:-D BUILD_opencv_python3=ON -D BUILD_EXAMPLES=ON -D PYTHON3_NUMPY_INCLUDE_DIRS=<path_to_numpy>/core/include -D PYTHON2_NUMPY_VERSION=<your_numpy_version>
mzmfm0qo

mzmfm0qo2#

我找到了确切的解决方案here,而确切地解决我的问题的方法是添加以下行:

-D PYTHON_DEFAULT_EXECUTABLE=<path/to/desired/python/environment>/bin/python3.5
-D PYTHON_INCLUDE_DIRS=<path/to/desired/python/environment>/include/python3.5m
-D PYTHON_EXECUTABLE=<path/to/desired/python/environment>/bin/python3.5
-D PYTHON_LIBRARY=<path/to/desired/python/environment>libpython3.5m.so.1
mrfwxfqh

mrfwxfqh3#

检查是否安装了python3-numpy。如果没有安装,cv2.so将不会生成www.example.com。

相关问题