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++ 相同的速度。