2017-10-16 82 views
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?

回答

1

語法是在2.4不同,從而修改如下

mark = cv2.cvtColor(mark,mark, CV_GRAY2RGB)