我尝试从列表中获取值。它在 Python 中定义为:
Line1 = [[[146.0, 560.0], [337.0, 478.0]],
[[204.0, 612.0], [397.0, 536.0]],
[[166.0, 437.0], [350.0, 434.0]],
[[166.0, 552.0], [350.0, 546.0]],
[[146.0, 560.0], [337.0, 478.0]],
[[204.0, 612.0], [397.0, 536.0]],
[[166.0, 437.0], [350.0, 434.0]],
[[166.0, 552.0], [350.0, 546.0]]]
通过以下方式解析为 PyArrayObject:
PyArrayObject *lineA = (PyArrayObject*) PyArray_FROMANY (objLineA, PyArray_DOUBLE, 3, 3, NPY_IN_ARRAY);
if (!lineA) {
PyErr_SetString(PyExc_ValueError, "expected [Layer][point][x] ");
return NULL;
}
到现在为止一切似乎都正常,尺寸也正常。但是当我尝试时:
struct pPoint {
float x;
float y;
};
...
struct pPoint p1a, p1b;
...
p1a.x = *((float * )PyArray_GETPTR3(lineA, 0, 0, 0));
p1a.y = *((float * )PyArray_GETPTR3(lineA, 0, 0, 1));
p1b.x = *((float * )PyArray_GETPTR3(lineA, 0, 1, 0));
p1b.y = *((float * )PyArray_GETPTR3(lineA, 0, 1, 1));
...
所有值为零。
从 PyObjArray 获取值的最佳和最简单方法是什么?为什么是 0.0?
我是一名优秀的程序员,十分优秀!