我已经安装了 OpenCV C++。我可以在不重新安装库的情况下在 Python 中使用它的功能吗?
Posted
技术标签:
【中文标题】我已经安装了 OpenCV C++。我可以在不重新安装库的情况下在 Python 中使用它的功能吗?【英文标题】:I already have OpenCV C++ installed. Can I use its functions in Python without reinstalling the library? 【发布时间】:2020-04-17 02:47:49 【问题描述】:首先,我正在为机器学习项目设置环境。我计划使用 tensorflow 进行训练,使用 opencv 进行数据采集和预处理。在之前的项目中,我已经在 C++ 中安装了 opencv,但这次我想将所有代码保留在 python 中,以使一切都变得干净。
我的计划可以实现吗?我需要重新配置或重新编译库吗?如果是这样,有没有办法让现有的 opencv 库与 python 一起工作?
如果你有更好的建议,欢迎在下方留言。
关于我当前系统的信息:
OSX 10.13.6 opencv 3.4.3(随自制软件安装) python 3.6.10【问题讨论】:
可以使用pip安装opencv-python
。为什么需要编译库?
@ranka47 我知道我可以使用 pip 来安装,但这会让我再次下载整个库吗?
是的,你不能在 Python 中使用 c++ Opencv 库。
有可能,但您需要对这些语言有深入的了解。我认为Here是你的答案
@Yunus Temurlenk 我检查了你的链接。这是否意味着每次我想使用 opencv 函数时都需要编写包装器?我可以将 c++ 库作为包导入 python 吗?
【参考方案1】:
只有绑定才需要编译。 python 包装器是从 OpenCV 的源代码生成的。生成的存根代码必须与 Python 和 OpenCV 库相关联。
该过程从modules/python/CMakeFiles.txt
处的 Cmake 文件开始,该文件应定义需要从 Python 获得的模块列表。接下来,通过驻留在 OpenCV 源结构中的 python 绑定生成器脚本从这些中获取和解析标头。标头应包括函数声明等,然后由相同的生成器脚本将其转换为包装函数。
您可以尝试修改 cmake 以排除/包含您不想编译和构建绑定的任何模块。这不会重新编译 OpenCV
请查看:OpenCV Python Bindings 以详细了解如何生成 python 绑定。
【讨论】:
以上是关于我已经安装了 OpenCV C++。我可以在不重新安装库的情况下在 Python 中使用它的功能吗?的主要内容,如果未能解决你的问题,请参考以下文章
为 OpenCV 安装 NetBeans 7.2 MinGW