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);
파 이 썬 부분:
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 전송 그림 인 스 턴 스 를 호출 하 는 것 은 바로 작은 편집 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.여러분 께 참고 가 되 고 저 희 를 많이 사랑 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
hdu 1717 소수 화 점수 2 (수학)소수 화 점수 2 레이 는 수학 시간 에 선생님 의 말씀 을 듣 고 모든 소수 가 점수 로 표시 되 는 형식 이 라 고 말 했다. 그 는 녹 기 시 작 했 고 곧 완성 되 었 다. 그러나 그 는 또 하나의 문 제 를...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.