准备做一个简单的人脸识别工程项目,选了MFC来做,不知道为什么在控制台程序下运行没有报错,到了MFC下面就会报很多看不懂的错。心酸。。。
对此,我的解决方法是,简单粗暴,在MFC中调用可执行程序,这个可执行程序就是调用caffe的控制台程序,把输出写到文件中,MFC程序在这个可执行程序执行完之后,读文件,就可得到caffe输出的信息。说起来很绕,其实代码也就几行而已。
//获取图片的特征向量
//调用可执行程序
hProg = ShellExecute(NULL, _T("open"), _T("C:\\Users\\ze\\Desktop\\毕业设计\\GetVectorProject\\x64\\Release\\ConsoleApplication16.exe"), NULL, NULL, SW_HIDE);
WaitForSingleObject(hProg, INFINITE);
//从文件中获取特征向量
while (!file.Open(_T("C:\\Users\\ze\\Desktop\\Picture_Change_Contents\\result.dat"), CFile::modeRead));
file.Read(test, sizeof(test));
file.Close();
//获取数据后,删除特征向量的文件
file3.Remove(_T("C:\\Users\\ze\\Desktop\\Picture_Change_Contents\\result.dat"));
这里使用的是ShellExecute()函数,函数原型是
HINSTANCE ShellExecute(
HWND hwnd,
LPCTSTR lpOperation,
LPCTSTR lpFile,
LPCTSTR lpParameters,
LPCTSTR lpDirectory,
INT nShowCmd
);
参数说明: