OpenCV-Python绑定如何工作及如何扩展新模块到Python
Posted 程序媛一枚~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV-Python绑定如何工作及如何扩展新模块到Python相关的知识,希望对你有一定的参考价值。
OpenCV-Python绑定如何工作及如何扩展新模块到Python
这篇博客将介绍 OpenCV-Python 绑定是如何生成的以及如何将新的OpenCV模块扩展到Python。
在 OpenCV 中,所有算法都是用 C++ 实现的。但是这些算法可以用于不同的语言,如 Python、Java 等。绑定生成器使这成为可能。 这些生成器在 C++ 和 Python 之间架起了一座桥梁,使用户能够从 Python 调用 C++ 函数。
1 OpenCV-Python 绑定的基本版本
- OpenCV提供了cv2 模块;
- 当调用一个函数时,比如在 Python 中 res = equalizeHist(img1,img2) ,传递了两个 Numpy 数组,一个Numpy数组为入参,期望另一个 Numpy 数组作为输出;
- 调用时numpy数组被转换为cv::Mat,然后在C++中调用equalizeHist()函数;
- 最终结果 res 将被转换回 Numpy 数组。
简而言之,几乎所有的操作都是在 C++ 中完成的,因此几乎拥有与 C++ 相同的速度。
2 如何将OpenCV的新模块扩展到 Python?
头文件解析器根据添加到函数声明中的一些包装宏来解析头文件。枚举常量不需要任何包装宏。它们会自动包装。但是剩下的函数、类等需要包装宏。
了解OpenCV 中可用的主要扩展宏。通常,开发人员必须将适当的宏放在适当的位置。其余部分由生成器脚本完成。
参考
以上是关于OpenCV-Python绑定如何工作及如何扩展新模块到Python的主要内容,如果未能解决你的问题,请参考以下文章
Android 数据绑定库 vs Kotlin Android 扩展