官网参见https://docs.opencv.org/3.4.1/da/d49/tutorial_py_bindings_basics.html
opencv和python绑定是如何生成的?
opencv中所有算法都是C++实现的。不过所有算法都可以用其他语言使用的,例如:python,Java。这是通过绑定生成器来实现的。这些生成器在C++和python之间创建了桥梁,让用户可以在python中调用C++函数。如果要了解整个过程,那就需要python/C的API知识了。python官方文档中有一个简单的例子说明如何扩展C++函数到python。如果要自己手工编写把所有opencv函数扩展到python的包装函数是很花费时间的。所以opencv采用了一种更加聪明的方法。opencv会使用一些modules/python/src2目录下的python脚本,来通过C++函数头文件自动生成包装函数。我们来看看是怎么做的。
首先,modules/python/CMakeFiles.txt文件是一个CMake脚本,用于核查所有需要扩展到python的模块。它会自动所有要扩展的模块并抓取它们的头文件。这些头文件包含了所有用于这些模块的类,函数和常量的列表。
其次,把头文件传入python脚本modules/python/src2/gen2.py。这就是python绑定生成器脚本。它会调用python脚本modules/python/src2/hdr_parser.py,这是头部解析器脚本。头解析器会将完整的头文件分解成小的python列表。这些列表包含了特殊函数,类的所有细节。例如,把一个函数解析为包含函数名,返回类型,输入参数,参数类型的列表。最终列表包含了头文件中所有函数,结构,类的详细信息。
<