首先,.pro檔案中引入路徑
.cpp檔案
py_initialize();
import_array();
if ( !py_isinitialized() )
pyobject* pmodule = pyimport_importmodule("test0623"); // 這裡的test_py就是建立的python檔案
if (!pmodule)
pyobject* pfunrgb2gray= pyobject_getattrstring(pmodule,"rgb2gray"); // 這裡的hellow就是python檔案定義的函式
pyobject *arglist = pytuple_new(1);
cv::mat mat;
mat = cv::mat(image.height(), image.width(), cv_8uc4, (void*)image.constbits(), image.bytesperline());
auto sz = mat.size();
int x = sz.width;
int y = sz.height;
int z = mat.channels();
uchar *carrays = new uchar[x*y*z];//這一行申請的記憶體需要釋放指標,否則存在記憶體洩漏的問題
int ichannels = mat.channels();
int irows = mat.rows;
int icols = mat.cols * ichannels;
if (mat.iscontinuous())
uchar* p;
int id = -1;
for (int i = 0; i < irows; i++)
}npy_intp dims[3] = ;
pyobject *pyarray = pyarray_******newfromdata(3, dims, npy_ubyte, carrays);
pytuple_setitem(arglist, 0, pyarray);
pyobject *preturn = pyobject_callobject(pfunrgb2gray, arglist);
if (preturn) // 驗證是否呼叫成功
py_finalize();
這裡簡單實現了一下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
編譯,再出錯
無法解析的外部符號 __imp___py_reftotal
無法解析的外部符號 __imp___py_negativerefcount,該符號在函式 __import_array 中被引用
解決方法
修改兩個標頭檔案
1 注釋掉object.h第56行
//#define py_trace_refs
2 pyconfig.h 337行
//# define py_debug
qt和python關係 Qt和Python D
qt中通常有兩種型別的小部件介面。乙個是檢視版本,另乙個是小部件版本 繼承檢視 最容易使用的是widget版本,對於您似乎正在嘗試做的事情,我建議您這樣做。在 另外,雖然你可以用你以前的方式來做軟體,但通常遵循更常見的約定會更好。我修改了您的 包括構建主視窗的方式 讓小gui使用新方法 addcar...
Python Numpy二維陣列和Numpy中的軸
二維陣列的表示方法 python原生 列表的列表 numpy ndarray pandas dataframe 二維ndarray與python list 1.ndarry效能更好 3.訪問語法差別 a 1,2 numpy ndarray a 1 2 python list numpy的軸 axis...
機器學習之旅 重要的Python庫 Numpy
numpy numerical python的簡稱 是python科學計算的基礎包。它提供了以下功能 1 快速高效的多維陣列物件ndarray 2 用於對陣列執行元素級計算以及直接對陣列執行數 算的函式 3 用於讀寫硬碟上基於陣列的資料集的工具 4 線性代數運算 傅利葉變換,以及隨機數生成 5 用於...