Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
试图通过自定义C++;将矩阵转换为numpy数组 我试图做一些Python包装来使用自定义C++的东西。我们使用的主要类型是2D灰度图像类型,数据分配在1D缓冲区中。我尝试这样包装它(下面是一个示例):_Python_C++_Arrays_Numpy_Wrapper - Fatal编程技术网

试图通过自定义C++;将矩阵转换为numpy数组 我试图做一些Python包装来使用自定义C++的东西。我们使用的主要类型是2D灰度图像类型,数据分配在1D缓冲区中。我尝试这样包装它(下面是一个示例):

试图通过自定义C++;将矩阵转换为numpy数组 我试图做一些Python包装来使用自定义C++的东西。我们使用的主要类型是2D灰度图像类型,数据分配在1D缓冲区中。我尝试这样包装它(下面是一个示例):,python,c++,arrays,numpy,wrapper,Python,C++,Arrays,Numpy,Wrapper,你知道我为什么会有这个问题吗?好的,所以我认为PyArray\u SimpleNewFromData函数在复制数据,但似乎没有。我的错误是释放了tmp\u img2D数组 PyObject* to_python_object(const custom2DImage& img) { int type_num = (int)NPY_UBYTE; long int dims[2] = {img.nr(), img.nc()}; uchar** tmp_img = new ucha

你知道我为什么会有这个问题吗?

好的,所以我认为
PyArray\u SimpleNewFromData
函数在复制数据,但似乎没有。我的错误是释放了
tmp\u img
2D数组

PyObject* to_python_object(const custom2DImage& img) {
  int type_num = (int)NPY_UBYTE;
  long int dims[2] = {img.nr(), img.nc()};

  uchar** tmp_img = new uchar*[img.nr()];
  tmp_img[0] = new uchar[img.nr() * img.nc()];
  for (int i = 1; i < img.nr(); ++i)
    tmp_img[i] = tmp_img[0] + img.nc();
  for (int i = 0; i < img.nc(); ++i)
    memcpy(tmp_mat[i], &img(i, 0), img.nc() * sizeof(uchar));
  PyObject* py_img = PyArray_SimpleNewFromData(2, dims, type_num, tmp_img[0]);

  Py_INCREF(py_img);
  delete[] tmp_img[0];
  delete[] tmp_img;

  PyObject *repr = PyObject_Repr(py_img);
  const char *s = PyString_AsString(repr);
  cout << s << endl;
  Py_XDECREF(repr);

  return py_img;
}
img = cst.read_image(filename);
if img is None:
    print("Can not load image from", filename)
    sys.exit(-1)
print(img)