0
我想从C++执行python脚本的OpenCV,运行Python脚本,以使用C++
C++部分:
Py_Initialize();
PyRun_SimpleString("import sys");
PyRun_SimpleString("print(sys.version)");
PyRun_SimpleString("sys.path.append('/path/to/module')");
pName = PyString_FromString("mymodule");
pModule = PyImport_Import(pName);
import_array();
PyArrayObject *np_ret, *np_arg;
pDict = PyModule_GetDict(pModule);
pFunc = PyDict_GetItemString(pDict, "process");
PyObject_CallFunctionObjArgs(pFunc, NULL);
Python模块:
import random
import numpy as np
import cv2
import sys
import segno
def process():
n = random.randint(1, 1000);
qr = segno.make(n)
mark = np.uint8(np.array(qr.to_pil(scale=2)))*255
mark = cv2.cvtColor(mark, cv2.COLOR_GRAY2RGB)
当我与编译opencv 3.2.0
它工作正常,但2.4.0
调用opencv函数时会出现分段错误cv2.cvtColor(mark, cv2.COLOR_GRAY2RGB)
是否可以使用2.4.0
这么做?也许有一些模块初始化程序,如import_array()
为numpy?