c++调用python脚本

之前是纯python脚本在跑一些功能,就当时在用matlab做图像处理,做做实验还可以。上到项目还是要用C++,

但python里面的一些功能代码又不想再用C++代码再实现一遍,故用C++来调用一些python脚本。长久之计还是

完全用C++代码实现吧。

下面介绍下相关配置吧:

1.用VS2013新建一个控制台程序,选择Release X64配置


2.sample1.cpp里代码如下:

// sample1.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "python.h"
#include <iostream>
#include <Windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
	char msg[256] = "11111 ";

	PyObject * pModule = NULL;
	PyObject * pFunc = NULL;
	PyObject * pArg = NULL;

	// 初始化python环境  
	Py_Initialize();

	// 导入python脚本  
	pModule = PyImport_ImportModule("TensorflowTest");
	if (!pModule) {
		OutputDebugStringA("1 cannot open module!");
		Py_Finalize();
		return 1;
	}

	// 获得TensorFlow函数指针  
	pFunc = PyObject_GetAttrString(pModule, "HelloTensor");
	if (!pFunc) {
		OutputDebugStringA("2 cannot find function!");
		Py_Finalize();
		return 1;
	}

	// 调用TensorFlow函数  
	pArg = Py_BuildValue("(s)", "this is a call from c++");
	if (pModule != NULL) {
		PyEval_CallObject(pFunc, pArg);
	}

	Py_Finalize();

	OutputDebugStringA("3 exit!");
	return 0;
}
3.工程路径配置

   (1)Configuration Properties属性里的VC++ Directories里为:

            C:\Program Files\Anaconda3\Scripts

            C:\Program Files\Anaconda3\include

  (2)Lineker里的General的Additional Library Directories里为:(为python的路径,我装的是Anaconda3(64-bit))

           C:\Program Files\Anaconda3\libs

           C:\Program Files\Anaconda3\Lib

   (3)Lineker里的Input的Additional Dependencies里为:

             python35.lib

4.编译该工程,转到生成的Release文件夹下

    在该文件夹下新建一份TensorflowTest.py文件,代码如下:

    

#!/usr/bin/python3.5  
# -*- coding: utf-8 -*-    
  
import sys  
import tensorflow as tf
import os
import cv2
import numpy as np
import sys
import pickle
from optparse import OptionParser
import time
from skimage.io import imsave, imread, imshow

def HelloTensor(s):
    print("me")
    data = imread("D:\\4.png")
    imsave("4.bmp",data)
    stdout_backup = sys.stdout
    log_file = open("log.txt", "w")
    sys.stdout = log_file
    print(s)

    hello = tf.constant('Hello, Ten1sorFlow!')
    sess = tf.Session()
    print(sess.run(hello))

    log_file.close()
    sys.stdout = stdout_backup
该python中import了一些库,如果你没有安装pip安装这些库,可以注释掉这些代码。同时拷贝python35.dll到该目录下。

5.重新生成该c++工程 

   会在Release目录下生成一个log.txt文件和保存的bmp文件

   


           

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

竹叶青lvye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值