python в c ++ с pybind - PullRequest
       9

python в c ++ с pybind

0 голосов
/ 03 апреля 2020

Я передаю массив 4,4 numpy из python в c ++, используя pybind, я получаю неверные данные на стороне c ++. Кто-нибудь может меня поправить?

Python side

import modul as md
import bumpy as np 
md.send(np.eye(4))

c++ side Я получаю массив как py::array_t<double> transfrom

auto buf1 = transfrom.request();
cv::Mat m(buf1.shape[0], buf1.shape[1], CV_32F , (double*)buf1.ptr);
cv::Matx44f gtranform((float*)m.ptr());
cout << "transform  "<< gtranform <<endl;

1 Ответ

0 голосов
/ 03 апреля 2020

Я использовал это и отказался от использования Mat

auto buf1 = transfrom.request();.
double *ptr1 = (double *) buf1.ptr;
int X = buf1.shape[0];
int Y = buf1.shape[1];
Matx44f gtranform(X,Y);
for (size_t idx = 0; idx < X; idx++)
  for (size_t idy = 0; idy < Y; idy++)
    gtranform(idx,idy) = ptr1[idx*Y+ idy];

Надеюсь, это кому-то поможет

...