源代码CV2.so生成的OpenCV 3.4 building不生成Ubuntu16.04

2024-10-01 22:40:12 发布

您现在位置:Python中文网/ 问答频道 /正文

这不是我第一次构建opencv,但是我不知道为什么没有生成cv2.so。我用水蟒,这是我的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,我怀疑这部分:

^{pr2}$

但是,我已经安装了numpy并正常运行。在

有人成功地构建了最新版本吗?他们是否更改了cv2.so库的名称?在


Tags: installnumpycmakehomeoutputprefixsocv2
2条回答

我在生成Python2.7绑定时遇到了同样的问题。通过手动检查opencv/CMakeLists.txt文件找到了解决方案。我认为转移Python3的变量可以解决您的问题。在

症状

在开始构建opencv之前,您已经可以通过检查包含To be built或{}的行中的cmake命令输出来判断是否将获得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

注意python2和{}如何在结尾处立即显示为不可用。在

修复(如果需要,将python2引用改为python3)

CMakeLists.txt中有一行包含

^{pr2}$

它旁边是一堆生成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标志。对于opencv3.4,标志名已经更改,根据CMakeLists.txt的内容,新变量名为:

-D BUILD_opencv_python3=ON

我还读到了另一个SO注释,即没有下面的标志(未测试)就不会生成cv2.so

-D BUILD_EXAMPLES=ON

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

我找到了确切的解决方案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

相关问题 更多 >

    热门问题