Qt+opencv dnn模块调用tensorflow模型

opencv默认是msvc的,如果Qt装的mingw的,需要编译一份opencv,我在网盘存了一份3.4.1版本的,忘记从哪里下载的了。

链接:https://pan.baidu.com/s/1whgWXpd8BAgahG0HZxHiVg 
提取码:pqpq 

之前做一个app部署深度学习模型,网上看到的都是java+android studio做的,用Qt做的见不到,最近才知道opencv有dnn模块,在网上找了一些资料,据说可以使用各种主流框架的模型文件,因此试用了一下,感觉用来部署很方便,opencv很强大。
我没有配置opencv-android-mingw,所以用的这个opencv应该不能用在android上,但是我觉得编译一个opencv-android-mingw应该可以用,以后会尝试。

主要代码

.pro文件中加入

INCLUDEPATH += D:\OpenCVMinGW3.4.1\include
LIBS += D:\OpenCVMinGW3.4.1\bin\libopencv_*.dll

点击构建,完成之后,把ssd_mobilenet_v1_coco_11_06_2017(主要用到pbtxt和pb文件)放在构建目录下(build-XXX_Qt_5_8_0_MinGW_32bit-Debug)。

调用tensorflow保存的模型文件

String weights = "./ssd_mobilenet_v1_coco_11_06_2017/frozen_inference_graph.pb";
String prototxt = "./ssd_mobilenet_v1_coco_11_06_2017/ssd_mobilenet_v1_coco.pbtxt";
dnn::Net net = cv::dnn::readNetFromTensorflow(weights, prototxt);

输入图片

cv::Mat blob = cv::dnn::blobFromImage(frame, 1. / 255, Size(300, 300));
net.setInput(blob);
Mat output = net.forward();

结果图展示:
在这里插入图片描述
测试速度有点慢,识别效果一般,可以换其他的模型试一试。

识别视频和单个图片的代码上传至github

以后的计划

尝试使用opencv-android用在手机上。

参考文献

OpenCV调用TensorFlow预训练模型
基于OpenCV和YOLOv3深度学习的目标检测

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值