파이썬 C- 확장을 라이브러리에 쓰고 있으며 Numpy 배열로 데이터를 반환하려고합니다. 라이브러리에는 센서에서 C 구조로 데이터를 반환하는 함수가 있습니다. 그 구조에서 데이터를 가져 와서 Numpy 배열로 반환하고 싶습니다.Numpy Array를 사용하여 구조체의 데이터를 반환하십시오.
라이브러리의 구조 정의 :
typedef struct rs_extrinsics
{
float rotation[9]; /* column-major 3x3 rotation matrix */
float translation[3]; /* 3 element translation vector, in meters */
} rs_extrinsics;
함수 프로토 타입 :
static PyObject *get_device_extrinsics(PyObject *self, PyObject *args)
{
PyArrayObject *result;
int dimensions = 12;
rs_stream from_stream;
rs_stream to_stream;
rs_extrinsics extrin;
if (!PyArg_ParseTuple(args, "iiffffffffffff", &from_stream, &to_stream, &extrin)) {
return NULL;
}
result = (PyArrayObject *) PyArray_FromDims(1, &dimensions, PyArray_DOUBLE);
if (result == NULL) {
return NULL;
}
rs_get_device_extrinsics(dev, from_stream, to_stream, &extrin, &e);
check_error();
result[0] = extrin.rotation[0];
return PyArray_Return(result);
}
: 여기
void rs_get_device_extrinsics(const rs_device * device, rs_stream from_stream, rs_stream to_stream, rs_extrinsics * extrin, rs_error ** error);
그냥 지금 첫 번째 값을 반환하려고 내 코드입니다
컴파일시 다음 오류가 발생합니다.
error: assigning to 'PyArrayObject' (aka 'struct tagPyArrayObject_fields') from incompatible type 'float'
result[0] = extrin.rotation[0];
^~~~~~~~~~~~~~~~~~~