这是我第一次为opencv函数编写python包装器。
我的项目的目的:在boost python的帮助下为c ++函数编写一个python包装器。
项目的复杂性:返回类型不是标准的。
a = mymodule.myfunction(args)
a的数据类型定义如下
struct pyopencv_DMatch_t { PyObject_HEAD cv :: DMatch v; };
我需要解决的问题:在编译之后,在python中导入mymodule.so,我发现pyopencv_DMatch_t类型的返回对象有空白属性,这意味着:
dir(a)的输出是[]
但是当我调试代码,并在第一次使用变量a之前设置断点,然后再次打印dir(a)时,我得到的输出不同:
[ 'DMatch', '的类', '的 delattr ', '的文档', '的格式', '的的getAttribute ', '的散列', '的初始化', '新', '的减少', '的 reduce_ex ', '的再版', '的 SETATTR ', '的的sizeof ', '的 STR ', '的 subclasshook ', '距离', 'imgIdx', 'queryIdx', 'trainIdx']
在其他工作中,在使用python代码导入mymodule后,如果我直接运行代码,我会收到一条错误消息,指出对象a没有属性'attribute_1',但如果我在第一次使用之前设置了一个断点变量a,暂停后由于断点,即使我什么也不做,代码可以正常运行。
我已经被这个问题困扰了好几天,真诚地感谢你的帮助或建议。
提前致谢。