带有两个主要python(3.7和3.8)的Opencv配置

2024-04-26 20:29:39 发布

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

一段时间以来,我一直在使用opencv(4.5.2源代码编译)和Python3.8.5(在Ubuntu18.04上),但对于某些项目,我确实需要使用tensorflow,它不适用于我的python版本。所以我安装了python3.7(从源代码),当启动我的pipenv shell时,一切似乎都正常,我可以使用python3.7

但在尝试导入cv2时,我遇到了以下错误:

ImportError: OpenCV loader: missing configuration file: ['config-3.7.py', 'config-3.py']

因此,我认为我应该针对我的特定Python 3.7重新编译OpenCV,但我也想让它与我以前的Python 3.8一起工作。针对这两个版本,我如何实现这一点

谢谢你抽出时间

安托万


Tags: 项目py版本config源代码tensorflowpipenv错误
1条回答
网友
1楼 · 发布于 2024-04-26 20:29:39

最后,我成功地从源代码构建了python3.7和3.8的配置文件,并执行了以下操作:

我第一次编译OpenCv时没有为Python编写任何参数。因此,默认情况下,它检测到我的Python3.8并创建config-3.8.py文件

然后,我用以下参数重新编译了针对Python 3.7的OpenCv:

cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-master/modules ../opencv-master -D PYTHON3_EXECUTABLE='/usr/local/bin/python3.7m' \
-D PYTHON_INCLUDE_DIR='/usr/local/include/python3.7m' \
-D PYTHON3_LIBRARY='/home/ubuntu/Documents/Libraries/python3.7/Python-3.7.4/libpython3.7m.so' \
-D PYTHON3_NUMPY_INCLUDE_DIRS='/usr/local/lib/python3.7/site-packages/numpy/core/include' \
-D PYTHON3_PACKAGES_PATH='/usr/local/lib/python3.7/site-packages' ..

请注意,PYTHON3_库必须以共享库(.so和not.a)为目标。我第一次编译Python3.7时没有使用enable-shared标志,所以它不起作用

在运行cmake之前(从OpenCv),在配置步骤中,您应该以这些打印的信息结束,以确保您的目标是正确的python:(这里是针对python3.8的,但下面的步骤将显示python3.7)

enter image description here

这些PYTHON_标志及其用法不在最新的Opencv文档(如4.5.2)中,而仅在以前的文档(如3.2.0)中:

https://docs.opencv.org/4.5.2/d7/d9f/tutorial_linux_install.html

https://docs.opencv.org/3.2.0/d7/d9f/tutorial_linux_install.html

然后我可以在3.7和3.8中导入cv2

相关问题 更多 >