Pybind11:没有参数的重载方法

问题描述

在我的 cpp 类 CameraBase 中,我有 2 个重载方法 getimageBuffer

 class CameraBase {
        virtual CameraFrameErr getimageBuffer(unsigned char* const ext_buffer,const uint32_t buffer_size) = 0;
    
        virtual std::shared_ptr<ImageBufferBase> getimageBuffer();
    }

我包装了返回类型并遵循 the documentation 并具有以下绑定:

py::class_<CameraBase,std::shared_ptr<CameraBase>,PyCameraBase>(m,"CameraBase")
        .def(py::init<>())
        .def("getimageBuffer",static_cast<CameraFrameErr (CameraBase::*)(unsigned char* const,const uint32_t)>(&CameraBase::getimageBuffer) )
        .def("getimageBuffer",static_cast<std::shared_ptr<ImageBufferBase>(CameraBase::*)()>(&CameraBase::getimageBuffer))
    

但是当从 python3 调用方法时:

imageBuffer = np.array(cam.getimageBuffer(),copy = False)

我明白

TypeError: getimageBuffer(): incompatible function arguments. The following argument types are supported:
    1. (self: _axcamera.LI_IMX490_GMSL2_SXProFrame,arg0: numpy.ndarray[uint8]) -> _axcamera.CameraFrameErr
    2. (self: _axcamera.LI_IMX490_GMSL2_SXProFrame,arg0: numpy.ndarray[uint16]) -> _axcamera.CameraFrameErr
    3. (self: _axcamera.LI_IMX490_GMSL2_SXProFrame,arg0: numpy.ndarray[int32]) -> _axcamera.CameraFrameErr
    4. (self: _axcamera.LI_IMX490_GMSL2_SXProFrame,arg0: numpy.ndarray[float32]) -> _axcamera.CameraFrameErr
    5. (self: _axcamera.LI_IMX490_GMSL2_SXProFrame,arg0: numpy.ndarray[float64]) -> _axcamera.CameraFrameErr

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)