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传输图片实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Python调用C++程序的方法详解

    前言 大家都知道Python的优点是开发效率高,使用方便,C++则是运行效率高,这两者可以相辅相成,不管是在Python项目中嵌入C++代码,或是在C++项目中用Python实现外围功能,都可能遇到Python调用C++模块的需求,下面列举出集中c++代码导出成Python接口的几种基本方法,一起来学习学习吧. 原生态导出 Python解释器就是用C实现,因此只要我们的C++的数据结构能让Python认识,理论上就是可以被直接调用的.我们实现test1.cpp如下 #include <Pytho

  • C++中指针函数与函数指针的使用

    指针函数 指针函数是一个函数,只不过指针函数返回的类型是某一类型的指针. 格式: 类型名* 函数名(函数参数列表) 使用: /* * 指针函数,返回int* 指针变量 */ int* add(int a, int b) { int *p; int c = a + b; p = &c; return p; } int main() { int* p; p = add(1, 4); printf("%d\n", *p); getchar(); return 1; } 函数指针 函数

  • Python使用ctypes调用C/C++的方法

    python使用ctypes调用C/C++ 1. ctpes介绍 ctypes is a foreign function library for Python. It provides C compatible data types, and allows calling functions in DLLs or shared libraries. It can be used to wrap these libraries in pure Python. 官方文档地址: https://do

  • c++回调之利用函数指针示例

    c++回调之利用函数指针示例 复制代码 代码如下: #include <iostream>using namespace std; /************************************************************************//*                下层实现: CALLBACK                                        *//**********************************

  • python调用c++返回带成员指针的类指针实例

    这个是OK的: class Rtmp_tool { public: int m_width; AVCodecContext * c; }; 指针的用法如下: Rtmp_tool * rtmp_tool; rtmp_tool = new Rtmp_tool(); rtmp_tool->m_width = 60; rtmp_tool->c = c; return rtmp_tool; 以上这篇python调用c++返回带成员指针的类指针实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希

  • 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

  • C++调用Python基础功能实例详解

    c++调用Python首先安装Python,以win7为例,Python路径为:c:\Python35\,通过mingw编译c++代码. 编写makefile文件,首先要添加包含路径: inc_path += c:/Python35/include 然后添加链接参数: ld_flag += c:/Python35/libs/libpython35.a 在源文件中添加头文件引用: #include "Python.h" Python解释器需要进行初始化,完成任务后需要终止: void s

  • 详解C++调用Python脚本中的函数的实例代码

    1.环境配置 安装完python后,把python的include和lib拷贝到自己的工程目录下 然后在工程中包括进去 2.例子 先写一个python的测试脚本,如下 这个脚本里面定义了两个函数Hello()和_add().我的脚本的文件名叫mytest.py C++代码: #include "stdafx.h" #include <stdlib.h> #include <iostream> #include "include\Python.h&quo

  • Python调用R语言实例讲解

    网络上经常看到有人问数据分析是学习Python好还是R语言好,还有一些争论Python好还是R好的文章.每次看到这样的文章我都会想到李舰和肖凯的<数据科学中的R语言>,书中一直强调,工具不分好坏,重要的是解决问题的思路,就算是简单的excel,也能应付数据分析中的大部分问题.再者Python和R本来就没有什么好对比的,一门是计算机工程语言,一门是统计语言,只有将两者结合起来,才能发挥更大的威力,不是吗,对于数据分析的人来说,难道不是两样都要掌握的吗? rpy2是Python调用R程序的模块,旨

  • python通过opencv调用摄像头操作实例分析

    实例源码: #pip3 install opencv-python import cv2 from datetime import datetime FILENAME = 'myvideo.avi' WIDTH = 1280 HEIGHT = 720 FPS = 24.0 # 必须指定CAP_DSHOW(Direct Show)参数初始化摄像头,否则无法使用更高分辨率 cap = cv2.VideoCapture(0, cv2.CAP_DSHOW) # 设置摄像头设备分辨率 cap.set(cv

  • 利用python调用摄像头的实例分析

    这篇文章主要介绍了python调用摄像头的示例代码,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下 一.打开摄像头 import cv2 import numpy as np def video_demo(): capture = cv2.VideoCapture(0)#0为电脑内置摄像头 while(True): ret, frame = capture.read()#摄像头读取,ret为是否成功打开摄像头,true,false. frame为视频的每一帧图像 frame = c

  • java 直接调用python脚本,并传递参数代码实例

    最近陆续用python写了很多文件处理脚本,虽然功能都比较简单 ,但还是感觉到python对文件处理的简洁高效 ,越发觉得java的语法相当的繁琐~ 接到个需求处理ftp数据接口 .所以想把python脚本也用上.java代码定时扫描ftp数据仓库 ,调用python脚本入库. 直接采用java执行系统命令的方式 @Async public void readFileByPython(List<String> filePaths) throws FileNotFoundException {

  • 基于Django的python验证码(实例讲解)

    验证码 在用户注册.登录页面,为了防止暴力请求,可以加入验证码功能,如果验证码错误,则不需要继续处理,可以减轻一些服务器的压力 使用验证码也是一种有效的防止crsf的方法 验证码效果如下图: 验证码视图 新建viewsUtil.py,定义函数verifycode 此段代码用到了PIL中的Image.ImageDraw.ImageFont模块,需要先安装Pillow(3.4.1)包, 详细文档参考 http://pillow.readthedocs.io/en/3.4.x/ Image表示画布对象

  • Python定时器实例代码

    在实际应用中,我们经常需要使用定时器去触发一些事件.Python中通过线程实现定时器timer,其使用非常简单.看示例: import threading def fun_timer(): print('Hello Timer!') timer = threading.Timer(1, fun_timer) timer.start() 输出结果: Hello Timer! Process finished with exit code 0 注意,只输出了一次,程序就结束了,显然不是我们想要的结果

  • json跨域调用python的方法详解

    本文实例讲述了json跨域调用python的方法.分享给大家供大家参考,具体如下: 客户端: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">

随机推荐