2015-05-29 65 views
2

我目前正在开发一个项目,为OpenCV 3.0 beta添加一个新模块,所以我试图用我自己的Python编译版本(就像C++版本一样) 。在特定版本的OpenCV中使用python

因为我不想搞乱已经安装的OpenCV和Python版本,所以我没有添加到ldconfig我的OpenCV 3.0 beta的特定构建/安装,我想在可能的情况下在python virtualenv中使用它。

到目前为止,我已经设置了VENV既然CV2不能访问它,我更新PYTHONPATH添加含有cv2.so文件(sudo apt-get install python-opencv创建)的文件夹。然而,这不是OpenCV的结合的正确版本被加载:

$ python -c "import cv2; print cv2.__version__" 
2.4.8 

有什么我可以做任何想法?

EDIT(感谢@otibom):

我的体型似乎是为什么我没有正确的cv2.so文件的原因。 cmake的结果是:

-- Python 2: 
--  Interpreter:     /usr/bin/python2.7 (ver 2.7.6) 
--  Libraries:     NO 
--  numpy:      /usr/lib/python2.7/dist-packages/numpy/core/include (ver 1.8.2) 
--  packages path:    lib/python2.7/dist-packages 

有没有办法纠正这种情况?

回答

0

编译OpenCV 3.0将创建自己的cv2.so文件,其中包含您的新模块,通常位于您的opencv3-0-0-beta/build目录中。您需要将OpenCV 3.0 build目录添加到PYTHONPATH而不是apt-get创建的目录。

+0

谢谢你有帮助,你确认。其实我意识到这个文件不是用我的版本创建的。这可能是因为我认为我有另一个问题(刚才意识到它,因为我之前没有在Python中使用OpenCV):cmake确实找到Python的二进制文件,而不是库。我会更新我的问题,所以它更清晰 –

+0

其实我解决了“查找库”问题并重新编译,但我没有在构建目录中找到该文件:'find -iname“cv2.so”'没有给我提供任何信息。它究竟应该在哪里? –

+0

没关系,我忘了在RELEASE模式下编译,也许这就是为什么文件没有生成的原因 –

1

关于“未找到库”问题,我删除了文件CMakeCache.txt,并在下面的cmake命令中找到了python库。 (但我不知道为什么会发生)

+0

我在Windows下有同样的问题(Python库一直在禁用);最后,我看了一下Python模块的'CMakeLists.txt',发现启用“Build_opencv_world”这个选项会禁用Python库。 – JPNotADragon