您的位置:首页 > Web前端

caffe框架下添加自己的MFC程序(下)(2016-08-04 )

2017-05-03 16:39 337 查看
转自:http://blog.csdn.net/shakevincent/article/details/52116388

版权声明:本文为博主原创文章,未经博主允许不得转载。

5:添加人脸分类程序 

无法识别using namespace cafffe: 

解决方案: 

发现c/c++—命令行中有很多OpenCV和一些其他项目的命令,在caffe-mfc也添加 

/fp:precise /D “NDEBUG” /D “_SCL_SECURE_NO_WARNINGS” /D “USE_OPENCV” /D “USE_LEVELDB” /D “USE_LMDB” /D “MATLAB_MEX_FILE” /D “CPU_ONLY” /D “_MBCS” /D “_AFXDLL” /errorReport:prompt /WX- /Zc:forScope /Gd /MD /Fa 



编译通过,发现可以识别caffe 

添加classifier.h头文件和classifier.cpp后 

1>F:\桌面文件\人脸识别MFC\7.1-caffe-face\NugetPackages\boost.1.59.0.0\lib\native\include\boost/lexical_cast/detail/lcast_unsigned_converters.hpp(255): error C3859: 超过了 PCH 的虚拟内存范围;请使用“-Zm123”或更大的命令行选项重新编译 

1>F:\桌面文件\人脸识别MFC\7.1-caffe-face\NugetPackages\boost.1.59.0.0\lib\native\include\boost/lexical_cast/detail/lcast_unsigned_converters.hpp(255): fatal error C1076: 编译器限制 : 达到内部堆限制;使用 /Zm 指定更高的限制 

解决方案:修改了/Zm200,后来发现可能是参考问题1导致的错误! 

参考问题1 

注意的问题:由于在调试程序的时候,加入了classifier.cpp导致了很多函数重定义
1:重新梳理MFC界面 

1:添加新的图片控件用于显示归一化后的图像和相似性的图像 

2:添加文本控件用于显示ID等信息。 

问题1:无法在文本编辑框中显示信息 

可以在其他函数中通过函数显示出文本信息,但是在识别的程序中就无法显示? 

解决方案:1:修改程序:使用不同的ontimer 目前可以实时的显示相似性度量值,姓名不能及时刷新。 

2:添加控制台程序方便观察程序运行状态 

3:删除命令行/wd”4661” /wd”4005” /wd”4812” /wd”4715” /Gy /Zc:wchar_t /I /EHsc /nologo /D “_MBCS” 

4:重新整理ontimer函数,目前可以解决上周的程序的(无法响应其他的按键) 

5:修改加载模型的程序
1:编译caffe—GPU 

1:下载cuda和cudnn for Windows 7.0版本 

2:安装cuda 并解压cudnn得到bin include lib 分别拷贝到cuda的安装目录中 

3:修改配置文件(使用GPU,版本号,不支持Python和matlab等) 

4:编译 出现警告:warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 

解决方案:在Project -> Properties -> Configuration Properties -> C/C++ -> Advance 的 Disable Specific Warnings 中添加相应的警告编号:4819 

5:删除不需要的工程文件,编译完成。 

2:添加人脸识别控制台程序 

1:复制人脸识别的程序添加到工程中。 

2:编译 

3:出现“把警告默认为错误” 

解决方案:在属性中修改为“否” 

3:添加MFC工程 

1: 

错误 8545 error C1083: 无法打开包括文件: “cublas_v2.h”: No such file or directory f:\桌面文件\人脸识别mfc\caffe-gpu-face\caffe-master\windows\caffe_mfc\caffe\util\device_alternate.hpp 34 

解决方案1:添加cuda的include和lib 

cublas.lib 

cublas_device.lib 

cuda.lib 

cudadevrt.lib 

cudart.lib 

cudart_static.lib 

cudnn.lib 

cufft.lib 

cuffw.lib 

curand.lib 

cusolver.lib 

cusparse.lib 

nppc.lib 

nppi.lib 

npps.lib 

nvblas.lib 

nvcuvid.lib 

nvrtc.lib 

OpenCL.lib 

出现很多无法解析的函数!!!!! 

改进方案:LINK错误大部分都是因为库文件和头文案包含的路径不对造成的, 

仔细检查每个文件下是不是有多余的文件,(导致上面解析错误的问题是因为我在DLIB文件中包含CPU版本的libcaffe.lib,所以导致了很多错误)仔细检查就可以。
内存不足的问题: 

解决方案:查看资源管理器,发现程序运行时只需要1.2G内存,单步调试,出现问题的地方是在读取姓名后,由于重新整理数据库导致里面有个名字丢失,造成空指针,导致内存不足。 

由于MFC还是有很多问题,很多程序写起来不是很方便,如果有时间和机会还是用QT。 



先共享出已经编译好的文件: 

移植到您的电脑可能会有一些其他依赖库的link error 仔细修改一下即可 

链接:http://pan.baidu.com/s/1o8cvNyq 密码:fhmj




0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: