用numpyarray挂起包装OpenCV Mat?

时间:2019-03-08 11:16:33

标签: python c++ numpy opencv mat

我在C ++中使用带有QT Creator IDE的opencv v3.4.2。

我正在尝试将OpenCV矩阵(Mat)包装为numpyarray(PyObject *),以便可以将其传递给python脚本进行处理。我正在从这里使用内置的包装器功能:opencv/cv2.cpp。特别是此功能:

PyObject* pyopencv_from(const Mat& m)
{
    if( !m.data )
        Py_RETURN_NONE;
    Mat temp, *p = (Mat*)&m;
    if(!p->u || p->allocator != &g_numpyAllocator)
    {
        temp.allocator = &g_numpyAllocator;
        ERRWRAP2(m.copyTo(temp));
        p = &temp;
    }
    PyObject* o = (PyObject*)p->u->userdata;
    Py_INCREF(o);
    return o;
}

所以我有这样的东西:

Mat frame;
/*frame is populated*/
PyObject* pMat = opencv_from(frame);

代码可以正常编译,但是当我调用该函数时,它将挂在m.copyTo(temp)上。

有人对为什么它不起作用有任何建议吗?谢谢。

0 个答案:

没有答案