C++ 调用 python tensorflow

参考链接:https://blog.csdn.net/zichen_ziqi/article/details/79068656

前言:主要针对,windows系统,很多人使用anconda安装的tensorflow不再base下,使用下面的配置,vs可以使用安装了tensorflow的python环境。(困扰点,在网上没找到相关解决方案,自己尝试,觉得行得通,果然最后能行通)

1、新建一个文件夹,取名为test_python(作为工程目录)
2、重点!通过anconda 安装tensorflow,会将tensorflow 创建在一个虚拟的python环境,这里将虚环境下include文件夹、libs文件夹都拷贝到test_python35文件夹中(通过anconda prompt 需要先激活虚python环境 这里直接将该python环境加入到工程目录)

C++ 调用 python tensorflow_第1张图片3、在libs目录中复制python35.dll并重命名为python35_d.dll
C++ 调用 python tensorflow_第2张图片
3、打开VS2015,新建一个项目face,选好路径为test_python
C++ 调用 python tensorflow_第3张图片4、新建一个main函数如下展示图所示,接下来需要配置环境变量


#include "stdafx.h"  
#include 
#include   

#include  "Python.h"

using namespace std;

void Hello() 
{
	   Py_SetPythonHome(L"D:/ANACONDA/envs/tensorflow");
		//初始化Python环境  很重要,必要
		Py_Initialize();

		PyRun_SimpleString("import sys");//很重要,之前model加载失败
		PyRun_SimpleString("sys.path.append('./')");
		//导入模块  
		PyObject* pModule = PyImport_ImportModule("classifier1");//不要加.py

		if (!pModule)
		{
			cout << "Python get module failed." << endl;
			return;
			
		}

		cout << "Python get module succeed." << endl;

		PyObject * pFunc = NULL;
		pFunc = PyObject_GetAttrString(pModule, "recognize_face");
		PyEval_CallObject(pFunc, NULL);
		Py_Finalize();
}





int main(int argc) {
	Hello();
	system("pause");
	return 0;
}

(1)添加头文件
C++ 调用 python tensorflow_第4张图片(2)添加库文件
C++ 调用 python tensorflow_第5张图片(3)代码中配置python3的环境变量

	   Py_SetPythonHome(L"D:/ANACONDA/envs/tensorflow");

5、生成解决方案,来生成的Debug目录,在该目录下添加python35.dll(带有tensorflow的安装环境)、调用的python原函数(classifier1.py与facenet.py,在classifier.py内使用了facenet.py中的函数),如下图所示

C++ 调用 python tensorflow_第6张图片C++ 调用 python tensorflow_第7张图片C++ 调用 python tensorflow_第8张图片再次执行,终于成了!!!!
C++ 调用 python tensorflow_第9张图片

你可能感兴趣的:(环境配置,c++调用python,tensorflow)