将opencv Mat转换为PyLis

2024-09-27 07:27:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用以下代码将OpenCV Mat转换为PyObject*:

PyObject* MatToList_Float(const cv::Mat& mat) {
    int listSize = mat.size().height * mat.size().width;
    PyObject* listObj = PyList_New(listSize);
    if (!listObj) throw logic_error("Unable to allocate memory for Python list");
    for (unsigned int i = 0; i < listSize; i++) {
        PyObject *num = PyFloat_FromDouble(mat.data[i]);
        if (!num) {
            Py_DECREF(listObj);
            throw logic_error("Unable to allocate memory for Python list");
        }
        PyList_SET_ITEM(listObj, i, num);
    }
    return listObj;
}

但始终在PyList_SET_ITEM行引发此异常:

Exception thrown at 0x00007FF68E6DE178 in EmbededPython.exe: 0xC0000005: Access violation writing location 0x0000000000000001.

在代码的开头,我使用了:

Py_Initialize();
PySys_SetArgv(argc,(wchar_t**)argv);

Tags: 代码forsizeiferrornumintpyobject

热门问题