目录
import_array();报错
矩阵互相转换
#include numpy相关vs2019配置
import_array();报错
参考:https://blog.csdn.net/weixin_40232401/article/details/106944336#:~:text=%E5%9C%A8,import_array%20%28%29%E5%87%BA%E7%8E%B0%E6%8A%A5%E9%94%99%EF%BC%8C%E6%9C%89%E8%BF%94%E5%9B%9E%E5%80%BC%EF%BC%8C%E8%BF%94%E5%9B%9E%E5%80%BC%E7%B1%BB%E5%9E%8B%E4%B8%8E%E5%87%BD%E6%95%B0%E7%B1%BB%E5%9E%8B%E4%B8%8D%E5%8C%B9%E9%85%8D%EF%BC%88%E8%BF%99%E6%AE%B5%E4%BB%A3%E7%A0%81%E5%9C%A8%E7%9A%84%E5%87%BD%E6%95%B0%E6%97%A0%E8%BF%94%E5%9B%9E%E5%80%BC%EF%BC%89%E3%80%82
这里简单实现了一下QImage格式的图片转opencv mat再转,后传入python的功能。
在 import_array()出现报错,有返回值,返回值类型与函数类型不匹配(这段代码在的函数无返回值)。
解决办法:
找到\Path\to\Pythonfile\Python36\Lib\site-packages\numpy\core\include\numpy__multiarray_api.h,1548行左右,删去return NUMPY_IMPORT_ARRAY_RETVAL
https://blog.csdn.net/ganwenbo2011/article/details/89790762
编译,再出错
无法解析的外部符号 __imp___Py_RefTotal
无法解析的外部符号 __imp___Py_NegativeRefcount,该符号在函数 __import_array 中被引用
1
2
解决方法
修改两个头文件
1 注释掉object.h第56行
//#define Py_TRACE_REFS
2 pyconfig.h 337行
//# define Py_DEBUG
矩阵互相转换
// Build the 2D array
PyObject *pReturn, *pFunc;
PyArrayObject *np_ret, *np_arg;
const int SIZE{ 10 };
npy_intp dims[2]{SIZE, SIZE};
const int ND{ 2 };
long double(*c_arr)[SIZE]{ new long double[SIZE][SIZE] };
long double* c_out;
for (int i{}; i < SIZE; i++)
for (int j{}; j < SIZE; j++)
c_arr[i][j] = i * SIZE + j;
PyObject* pReturn1 = PyArray_SimpleNewFromData(ND, dims, NPY_LONGDOUBLE,
reinterpret_cast<void*>(c_arr));
np_arg = reinterpret_cast<PyArrayObject*>(pReturn1);
// Calling array_tutorial from mymodule
PyObject *pName = PyUnicode_FromString("mymodule");
PyObject* pArgs = PyTuple_New(1);
PyTuple_SetItem(pArgs, 0, reinterpret_cast<PyObject*>(np_arg));
PyObject* pReturn2 = PyEval_CallObject(pFunc1, pArgs);
#include numpy相关vs2019配置