我已经安装了 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 中使用它的功能吗?的主要内容,如果未能解决你的问题,请参考以下文章

C++ OpenCV 源代码

C++ OpenCV 中的快速索引

为 OpenCV 安装 NetBeans 7.2 MinGW

已经安装了的php,支持gd,但不支持jpeg.如何处理?在不重新编辑php的情况下。

C++ openCV文件打开问题

如何在不安装 RPM 的情况下“重新打包”一个 RPM 文件,例如 cpio2rpm?