c++ 调用python传输图片实例

 更新时间:2019年12月12日 10:21:36   作者:ShellCollector  
今天小编就为大家分享一篇c++ 调用python传输图片实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

如下所示:

#include <Python.h>

#include <arrayobject.h>

 

#include "opencv2/imgcodecs.hpp"

#include "opencv2/imgproc.hpp"

#include "opencv2/videoio.hpp"

#include <opencv2/highgui.hpp>

#include <opencv2/video.hpp>

#include "opencv2/video/background_segm.hpp"

//using namespace std;

int init_numpy() {

 import_array();

}

初始化:

 Py_SetPythonHome(L"D:\\Users\\Lenovo\\Anaconda3\\envs\\python35");

 Py_Initialize();

 init_numpy();

 PyRun_SimpleString("import sys");

 PyRun_SimpleString("sys.path.append('./')");

 pModule = NULL;

 pFunc = NULL;

 pModule =PyImport_ImportModule("demo");

 pFunc =PyObject_GetAttrString(pModule, "load_model");

 PyEval_CallObject(pFunc,NULL);

传输代码:

 cv::Mat img =cv::imread("d:\\1.jpg", CV_LOAD_IMAGE_COLOR);

 int m, n;

 n = img.cols *3;

 m = img.rows;

 unsigned char *data = (unsigned char*)malloc(sizeof(unsignedchar) * m * n);

 int p = 0;

 for (int i = 0; i < m;i++)

 {

  for (int j = 0; j < n; j++)

  {

   data[p]= img.at<unsignedchar>(i, j);

   p++;

  }

 }

 npy_intp Dims[2]= { m, n }; //给定维度信息

 PyObject*PyArray = PyArray_SimpleNewFromData(2, Dims, NPY_UBYTE, data);

 PyObject*ArgArray = PyTuple_New(1);

 PyTuple_SetItem(ArgArray,0, PyArray);

 PyObject *pDict= nullptr;

 pDict =PyModule_GetDict(pModule);

 PyObject*pFuncFive = PyDict_GetItemString(pDict, "load_image");

 //PyObject_CallObject(pFuncFive, ArgArray);

 

 PyObject*pReturn = PyObject_CallObject(pFuncFive, ArgArray);

 int result;

 PyArg_Parse(pReturn,"i", &result);

 CString strtemp;

 strtemp.Format(_T("%d"), result);

 MessageBox(strtemp);

Python部分:

importcv2
import numpyas np

w=227
h=227
c=3
sess = None
def arrayreset(array):
 # for i inrange(array.shape[1]/3):
 #  pass
 a = array[:,0:len( array[0] -2 ):3]
 b = array[:, 1:len( array[0] - 2 ):3]
 c = array[:, 2:len( array[0] - 2 ):3]
 a = a[:, :, None]
 b = b[:, :, None]
 c = c[:, :, None]
 m = np.concatenate((a,b,c),axis=2)
 return m
def load_model():
 global sess
 sess = tf.Session()
 saver = tf.train.import_meta_graph( './model/model.ckpt.meta')
 saver.restore( sess, tf.train.latest_checkpoint('./model/') )

def load_image(image):
 img = arrayreset(image)

其实还可以用imencode来解决:本文尚未完善

Mat image = imread("d:\\11.jpeg", CV_LOAD_IMAGE_COLOR);


IplImage iplimage = image;


vector<uchar> buff;//buffer for coding 


vector<int> param = vector<int>(2);


param[0] = CV_IMWRITE_JPEG_QUALITY;


param[1] = 95;//default(95) 0-100 

imencode(".jpg", image, buff, param);
std::string str_encode(buff.begin(), buff.end());

以上这篇c++ 调用python传输图片实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • C++求所有顶点之间的最短路径(用Dijkstra算法)

    C++求所有顶点之间的最短路径(用Dijkstra算法)

    这篇文章主要为大家详细介绍了C++用Dijkstra算法求所有顶点之间的最短路径,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • AVX2指令集优化浮点数组求和算法

    AVX2指令集优化浮点数组求和算法

    这篇文章主要为大家介绍了AVX2指令集优化浮点数组求和算法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • C语言的字符函数和字符串函数详解

    C语言的字符函数和字符串函数详解

    这篇文章主要为大家介绍了C语言的字符函数和字符串函数,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • Qt5.9.5 随机转盘小项目的实现示例

    Qt5.9.5 随机转盘小项目的实现示例

    本文主要介绍了Qt5.9.5随机转盘小项目的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • C++中继承与多态的基础虚函数类详解

    C++中继承与多态的基础虚函数类详解

    这篇文章主要给大家介绍了关于C++中继承与多态的基础虚函数类的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-09-09
  • C语言互换最大值与最小值的位置

    C语言互换最大值与最小值的位置

    大家好,本篇文章主要讲的是C语言互换最大值与最小值的位置,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • 希尔排序算法的C语言实现示例

    希尔排序算法的C语言实现示例

    这篇文章主要介绍了希尔排序算法的C语言实现示例,希尔排序可以看作为一种高级的插入排序,需要的朋友可以参考下
    2016-04-04
  • 详析C++中的auto

    详析C++中的auto

    这篇文章主要介绍了详析C++中的auto,auto是具有自动存储器的局部变量,C++11中,标准委员会赋予了auto全新的含义即:auto不再是一个存储类型指示符,而作为一个新的类型指示符来指示编译器,下面来看看文章的详细介绍吧
    2022-01-01
  • C++封装静态链接库和使用的详细步骤

    C++封装静态链接库和使用的详细步骤

    这篇文章主要介绍了C++封装静态链接库和使用,本文描述了怎么去把一个C++程序封装成一个静态库并且如何去使用这些静态库,需要的朋友可以参考下
    2022-08-08
  • 基于Qt OpenCV的图像灰度化像素操作详解

    基于Qt OpenCV的图像灰度化像素操作详解

    这篇文章主要为大家详细介绍了基于Qt+OpenCV的图像灰度化像素操作:最大值法、平均法、加权平均值法,感兴趣的小伙伴可以了解一下
    2022-07-07

最新评论