2019-10-22 opencv和python绑定是如何实现的?

本文介绍了opencv库如何通过绑定生成器实现在Python中的使用,详细讲解了从C++头文件解析到生成Python包装函数的过程。涉及到的关键点包括CMake配置、hdr_parser.py解析头文件、宏定义如CV_EXPORTS_W、CV_WRAP等,以及如何在Python中扩展新模块。通过理解这些原理,开发者可以更好地理解和利用opencv的Python接口。
摘要由CSDN通过智能技术生成

官网参见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列表。这些列表包含了特殊函数,类的所有细节。例如,把一个函数解析为包含函数名,返回类型,输入参数,参数类型的列表。最终列表包含了头文件中所有函数,结构,类的详细信息。

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值