Wrap OpenCV Mat, как Numpyarray висит? - PullRequest
0 голосов
/ 08 марта 2019

Я использую opencv v3.4.2 с IDE QT Creator в C ++.

Я пытаюсь обернуть матрицу OpenCV (Mat) в виде numpyarray (PyObject *), чтобы я мог передать его питонускрипт для обработки.Я использую встроенные функции оболочки отсюда: 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).

У кого-нибудь есть совет, почему это не работает?Спасибо.

...