由于实验室项目需要,要将深度学习模块搭载到上位机中,目前是用QT做上位机界面设计,因此这篇文章和大家分享一下如何把已训练好的Tensorflow模型通过opencv搭载得Dnn模块加载到上位机Qt中。
电脑配置以及软件配置
我的电脑配置是W10/64位,安装得Qt版本是5.9.8,opencv的版本是3.4.1(安装的opencv版本必须大于或等于这个版本)
安装过程
参考opencv安装在QT上的安装教程
在用cmake编译过程中出现了这个问题
错误1
3rdparty\protobuf\CMakeFiles\libprotobuf.dir\build.make:412: recipe for target '3rdparty/protobuf/CMakeFiles/libprotobuf.dir/src/google/protobuf/stubs/io_win32.cc.obj' failed
mingw32-make[2]: *** [3rdparty/protobuf/CMakeFiles/libprotobuf.dir/src/google/protobuf/stubs/io_win32.cc.obj] Error 1
CMakeFiles\Makefile2:710: recipe for target '3rdparty/protobuf/CMakeFiles/libprotobuf.dir/all' failed
mingw32-make[1]: *** [3rdparty/protobuf/CMakeFiles/libprotobuf.dir/all] Error 2
Makefile:161: recipe for target 'all' failed
mingw32-make: *** [all] Error 2
解决方案:
在 cmake-gui 编译配置中:
勾选 ENABLE_CXX11
然后重新Configure-Generate-mingw32-make
错误2
Makefile:161: recipe for target 'all' failed
mingw32-make: *** [all] Error 2
找到opencv\sources\modules\videoio\src\cap_dshow.cpp文件,在#include "DShow.h"这行的上面加一行#define NO_DSHOW_STRSAFE
然后重新Configure-Generate-mingw32-make
解决这两个错误后,安装和编译就全部解决了
程序运行
采用的是tensorflow官方训练好的模型,在QT中pro文件中按下图配置
.dll前的341是根据你安装的opencv版本载入的,我是把bin文件下所有的dll文件全部引用过来了。
输出结果
在网上选取的一张图,运行后结果如下
后续将把自己训练好的模型应用到上位机中。