c++调用python训练的tensorflow模型
来源:互联网 发布:canvas2image.js 下载 编辑:程序博客网 时间:2024/05/21 19:43
本章主要参考:
http://m.blog.csdn.net/qq_34484472/article/details/76598852
主要是为了记录
本机环境:
Ubuntu14 python3.5 tensorflow1.2
具体步骤:
1.python环境
首先安装python。记住python一定选择64bit,目前tensorflow不支持32位的python,这也是我之前被坑过的地方。,下载Anaconda后直接
bash Anaconda3-4.3.1-Linux-x86_64.sh
就可以安装,然后
gedit ~/.bashrc
在最后面加上
export PATH=/<你的anaconda路径>/bin:$PATH
将python安装路径添加到系统路径中,这样在终端敲python后会运行安装的python3.6,如下图所示,代表安装成功:
安装pytohn成功
2.tensorflow
直接终端输入:
pip install tensorflow
就会自动帮你安装到python下。
如果出现类似“没有找到匹配版本”(或者红色英文提示),那么你可能装的是python32bit版本,暂时不支持tensorflow!
安装成功后在终端如下操作:
tensorflow安装成功
显示tensorflow版本,表示安装成功!
一个结合的demo
#include <python.h>#include <iostream>int main(int argc, char** argv){ char* picpath ="/home/pdd/PD/c++/c++python/pic/0.0.jpg"; Py_Initialize(); if ( !Py_IsInitialized() ) { return -1; } PyRun_SimpleString("import sys"); PyRun_SimpleString("sys.path.append('./')"); PyObject* pMod = NULL; PyObject* pFunc = NULL; PyObject* pParm = NULL; PyObject* pRetVal = NULL; int iRetVal = -999; char* modulName="classify"; //这个是被调用的py文件模块名字 pMod = PyImport_ImportModule(modulName); if(!pMod) { return -1; } char* funcName="evaluate"; //这是此py文件模块中被调用的函数名字 pFunc = PyObject_GetAttrString(pMod, funcName); if(!pFunc) { return -2; } pParm = PyTuple_New(1); PyTuple_SetItem(pParm, 0, Py_BuildValue("s",picpath));//传入的参数,是图片的路径 pRetVal = PyEval_CallObject(pFunc, pParm);//这里开始执行py脚本 PyArg_Parse(pRetVal, "i", &iRetVal);//py脚本返回值给iRetVal //PyErr_Print(); std::cout<<iretval; pre="" return=""><p><strong><em>4.tensorflow的python脚本</em></strong> 默认你已经写好tensorflow的python脚本,并能跑成功。(tensorflow的使用不是本文重点) c++需要调用的就是这个classify.py里面的evaluate函数,传入图片路径,返回分类结果给c++程序。</p><pre class="brush:java;">from PIL import Imageimport numpy as npimport tensorflow as tfdef evaluate(pic): image = Image.open(pic) image = image.resize([256, 256]) image_array = np.array(image) with tf.Graph().as_default(): 里面就是对图像读取模型,预测,得到prediction…… max_index = np.argmax(prediction) return max_index</pre>//c++调用python脚本的环境这时候需要写一个简单的makefile加入需要的依赖环境。例如c++代码第一行的Python.h和相关的库文件。<br>简单的makefile如下:main:c++python.cpp g++ -o out c++python.cpp -I/home/pdd/anaconda3/include/python3.6m -lpython3.6m -L /home/pdd/anaconda3/libclean: rm -rf *.o 后面的/home/pdd/anaconda3/include/python3.6m有需要的Python.h;-lpython3.6m链接到需要的libpython3.6m.so;-L指出链接的路径。终端输入make。如果提示需要什么libpython3.6m.<em>.so,就把/home/pdd/anaconda3/lib下的libpython3.6m.</em>.so复制到/usr/lib/下(sudo cp ——–)此时再次输入make,一切ok!得到out文件,输入./out,结果如下:<img alt="结果图" src="/uploadfile/Collfiles/20170803/20170803094027714.png" style="width: 630px; height: 286.68px;"><br>得到结果0。任务完成!
阅读全文
0 0
- c++调用python训练的tensorflow模型
- C++调用tensorflow 训练好的模型
- tensorflow训练好的模型中java调用
- Python调用已训练好的caffe模型进行分类
- python 用opencv调用训练好的模型进行识别
- 使用python调用训练好的caffe模型来分类
- TensorFlow的训练模型在Android和Java的应用及调用
- TensorFlow的训练模型在Android和Java的应用及调用
- tensorflow将训练好的模型
- tensorflow 模型训练
- 将caffe训练好的模型转换为tensorflow模型
- Tensorflow深度学习入门——优化训练MNIST数据和调用训练模型识别图片
- tensorflow 的模型保存和调用
- tensorflow 加载预训练模型
- tensorflow ssd mobilenet模型训练
- TensorFlow on Android:训练模型
- tensorflow训练出的模型识别的demo
- 手写选择题识别-c++线上调用 线下python跑出的tensorflow模型-占坑
- ci 分页类 伪静态错误的情况,需要修改\system\libraries\Pagination.php
- name="viewport" width="device-width" 到底都是啥
- 多种方法求逆元的板子
- 字节流转化工具
- osg之基本图元(一)
- c++调用python训练的tensorflow模型
- 项目实战:如何构建知识图谱
- 我不会编程,但也不是一点都不会, 我稍微会一些
- 一中OJ #1457 越大越聪明[Uva 10131 -> Is Bigger Smarter?] | 动态规划 字典序LIS | 解题报告
- 多对多
- 数据结构实验之二叉树五:层序遍历
- 旋转变换(一)旋转矩阵
- jsday7
- 数据结构回顾与总结 图(2)两种基本的遍历方式