最近在搞kinect人體骨架識別的研究,因為姿勢識別要用到深度學習方面的東西,而現在比較流行的深度學習框架是tensorflow,對python支援的相當好,我的專案是用c++寫的,難免這兩種語言做互動,接下來我就c++如何調python做一下總結。
一,建乙個win32控制台專案c++_tensorflow
右鍵專案屬性,vc++目錄——>包含目錄d:\program files\python36\include
庫目錄d:\program files\python36\libs;d:\program files\python36\lib
然後開啟python的安裝目錄,找到libs資料夾,複製乙份python36.lib,並命名為python36_d.lib(這個的原因是inlcude目錄下的pyconfig.h裡面的**在debug下呼叫的是python36_d.lib)
二,準備工作
把python安裝目錄下的python36.dll、自己的python指令碼tensorflowtest.py都放到debug目錄或release目錄下(裡面有xx.exe檔案)
三,**實現
main.cpp
#include
#include
using
namespace
std;
//呼叫輸出"hello python"函式
void hello()
pfunc = pyobject_getattrstring(pmodule, "hello");//呼叫的函式名
if (!pfunc)
//返回值
pyobject *preturn = null;
preturn = pyeval_callobject(pfunc, null);//呼叫函式
//將返回值轉換為int型別
int result;
pyarg_parse(preturn, "i", &result);//i表示轉換成int型變數
cout
<< "結果 = "
<< result << endl;
//pyeval_callobject(pfunc, null);//呼叫函式,null表示引數為空
py_finalize();//呼叫py_finalize,和py_initialize相對應的.
}//呼叫add函式,傳兩個int型引數
void add()
int main(int argc, char** argv)
tensorflowtest.py
import tensorflow as tf
defhello
(): a = tf.constant(2)
b = tf.constant(2)
c = tf.add(a, b)
with tf.session() as sess:
d=sess.run(c)
return d
defadd
(a, b):
return a+b
注意:如果要呼叫的函式引數是指定的檔案,需把檔案放到工程目錄(和debug目錄同級)下
c 呼叫tensorflow的例子
乙個很簡單的例子,使用c 呼叫tensorflow。首先需要安裝windows 版本的tensowflow,使用64位的python3.5,如果沒有安裝,需要首先安裝python3.5 然後以管理員方式進入命令列,執行 pip install tensorflow starcorefactory s...
C 模組呼叫 C 編寫模組
c 模組呼叫 c 編寫模組 涉及知識點 1 ifdef cplusplus extern c 處理其中的 要明白為何使用extern c 還得從cpp 中對函式的過載處理開始說起。在c 中,為了支援過載機制,在編譯生成的彙編碼中,要對函式的名字進行一些處理,加入比如函式的返 回型別等等.而在c 中,...
C 呼叫tensorflow模型EAST識別文字
主要利用了emgucv這個opencv的c 庫,但是由於emgucv裡的nms只能計算rect不能計算rotaterect所以識別水平文字還行,傾斜的就不行了,如下 寫的不規範什麼的勿噴.如果有什麼問題請告訴我,互相提高嘛 using system using system.collections....