c++ 调用python传输图片实例
如下所示:
#include#include #include"opencv2/imgcodecs.hpp" #include"opencv2/imgproc.hpp" #include"opencv2/videoio.hpp" #include #include #include"opencv2/video/background_segm.hpp" //usingnamespacestd; intinit_numpy(){ import_array(); }
初始化:
Py_SetPythonHome(L"D:\\Users\\Lenovo\\Anaconda3\\envs\\python35");
Py_Initialize();
init_numpy();
PyRun_SimpleString("importsys");
PyRun_SimpleString("sys.path.append('./')");
pModule=NULL;
pFunc=NULL;
pModule=PyImport_ImportModule("demo");
pFunc=PyObject_GetAttrString(pModule,"load_model");
PyEval_CallObject(pFunc,NULL);
传输代码:
cv::Matimg=cv::imread("d:\\1.jpg",CV_LOAD_IMAGE_COLOR);
intm,n;
n=img.cols*3;
m=img.rows;
unsignedchar*data=(unsignedchar*)malloc(sizeof(unsignedchar)*m*n);
intp=0;
for(inti=0;i(i,j);
p++;
}
}
npy_intpDims[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);
intresult;
PyArg_Parse(pReturn,"i",&result);
CStringstrtemp;
strtemp.Format(_T("%d"),result);
MessageBox(strtemp);
Python部分:
importcv2
importnumpyasnp
w=227
h=227
c=3
sess=None
defarrayreset(array):
#foriinrange(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)
returnm
defload_model():
globalsess
sess=tf.Session()
saver=tf.train.import_meta_graph('./model/model.ckpt.meta')
saver.restore(sess,tf.train.latest_checkpoint('./model/'))
defload_image(image):
img=arrayreset(image)
其实还可以用imencode来解决:本文尚未完善
Matimage=imread("d:\\11.jpeg",CV_LOAD_IMAGE_COLOR);
IplImageiplimage=image;
vectorbuff;//bufferforcoding
vectorparam=vector(2);
param[0]=CV_IMWRITE_JPEG_QUALITY;
param[1]=95;//default(95)0-100
imencode(".jpg",image,buff,param);
std::stringstr_encode(buff.begin(),buff.end());
以上这篇c++调用python传输图片实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。