gpt4 book ai didi

python - 如何从 PyArrayObject 获取值?

转载 作者:太空宇宙 更新时间:2023-11-04 04:42:44 26 4
gpt4 key购买 nike

我尝试从列表中获取值。它在 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?

最佳答案

我遇到了同样的问题。当我打印出该值时,它始终为 0.0。尝试将 C 中的所有“float”更改为“double”。Python 中的 float 类型是 C 中的 double 类型。您还声称其类型为 PyArray_DOUBLE。

关于python - 如何从 PyArrayObject 获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24332428/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com