Error de sobrecarga del operador de envoltura Cython C ++ ()

Conectado con mi pregunta anterior.Usar Cython para envolver una clase de C ++ que usa tipos de OpenCV como parámetros

Ahora estoy atrapado en otro error. Mi código de envoltura de cython del tipo OpenCV Matx33d se ve así:

cdef extern from "opencv2/core/core.hpp" namespace "cv":
    cdef cppclass Matx33d "cv::Matx<double, 3, 3>":
        Matx33d()
        Matx33d(double v0, double v1, double v2, double v3, double v4, double v5, double v6, double v7, double v8)
        double& operator()(int i, int j)

Luego defino una función para copiar el Matx33d a una matriz numpy.

cdef Matx33d2numpy(Matx33d &m):
    cdef np.ndarray[np.double_t, ndim=2] np_m = np.empty((3,3), dtype=np.float64)  
    np_m[0,0]= m(0,0); np_m[0,1]= m(0,1); np_m[0,2]= m(0,2)
    np_m[1,0]= m(1,0); np_m[1,1]= m(1,1); np_m[1,2]= m(1,2)
    np_m[2,0]= m(2,0); np_m[2,1]= m(2,1); np_m[2,2]= m(2,2)    
    return np_m

Cuando compilo el envoltorio de cython me sale estos errores

geom_gateway.cpp(2528) error C3861: '()': identifier not found

Esto corresponde al primer uso de Matx33d :: operator (), que es cuando se accede a m (0,0) en el código anterior. Si miro la línea generada geom_gateway.cpp 2528, obtengo:

  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_double_t *, __pyx_pybuffernd_np_m.rcbuffer->pybuffer.buf, __pyx_t_6, __pyx_pybuffernd_np_m.diminfo[0].strides, __pyx_t_7, __pyx_pybuffernd_np_m.diminfo[1].strides) = operator()(0, 0);

¡No entiendo a este operador () (0, 0) solo al final de la línea sin ningún objeto! ¿Cómo es esto posible? ¿Es este un error de Cython? ¿O es incorrecta la sintaxis que estoy usando para el operador ()? Cualquier ayuda es apreciada!

Respuestas a la pregunta(1)

Su respuesta a la pregunta