VS C++呼叫python及pytorch模型
一、傳圖片
遇到的問題:C++呼叫python傳輸圖片,給個好連結:
https://blog.csdn.net/jacke121/article/details/78574476
其中有一點要注意,就是opencv的三通道是BGR(順序),那邊python的numpy是 真·RGB(順序)。
二、載入pytorch模型
因為四月底出了windows的pytorch版本。
所以嘗試了一下,速度在個人pc上60ms左右,還可以用用。
將載入的pytorch模型直接儲存為PyObject*物件,再和上面的影象(也是儲存為PyObject*物件)一起傳給python,輸出,ms級別。再返回來。
三、C++呼叫python
比想象中的要簡單。
//傳入引數呼叫函式,並獲取返回值
PyObject* pRet_3 = PyObject_CallObject(pv_3, pArgs_1);//獲得模型
PyObject* pModule_3 = PyImport_ImportModule("image_test_c_2");
//獲取image_test_c模組內main函式
PyObject* pv_4 = PyObject_GetAttrString(pModule_3, "main");
//傳入python的引數
PyObject* pArgs_2 = PyTuple_New(3);
PyTuple_SetItem(pArgs_2, 0, image_1_test);
PyTuple_SetItem(pArgs_2, 1, image_2_test);
PyTuple_SetItem(pArgs_2, 2, pRet_3);
//傳入引數呼叫函式,並獲取返回值
PyObject* pRet_4 = PyObject_CallObject(pv_4, pArgs_2);//模型
打完收工。
pytorch提供的c++介面,能定義layers。可以看一下。