1. 程式人生 > >VS C++呼叫python及pytorch模型

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。可以看一下。