opencv调用预训练模型

该文介绍如何使用OpenCV调用已训练好的TensorFlow模型,强调了需要.pb和.pbtxt文件。提供了从.pb文件转换.pbtxt文件的脚本,并给出调用模型进行图像识别的Python代码示例。
摘要由CSDN通过智能技术生成

前言

这篇文章主要讲一下opencv怎么调用已经训练好的模型。对于不懂tensorflow,只想调用tensorflow已经训练好模型的朋友来讲非常有用。

下载链接:
.configs文件下载
.pb文件下载
.pbtxt文件下载
转换脚本下载:
tf_text_graph_faster_rcnn.py
tf_text_graph_mask_rcnn.py
tf_text_graph_ssd.py

必须明白

opencv调用tensorflow的预训练模型需要.pb文件和.pbtxt文件。

如果从上面的链接可以找到.pb文件对应的.pbtxt文件,那直接下载就好了。万一找不到也没关系,opencv提供了相应的转换脚本来从.pb转成.pbtxt文件,脚本文件名为tf_text_graph_faster_rcnn.py,tf_text_graph_mask_rcnn.py,tf_text_graph_ssd.py。

用脚本生成pbtxt文件不仅要输入pb文件,还需要输入对应的.config文件。

  • 转换命令:
python tf_text_graph_ssd.py --input /path/to/model.pb --config /path/to/example.config --output /path/to/graph.pbtxt

调用

直接上代码

import cv2 as cv
 
cvNet = cv.dnn.readNetFromTensorflow('frozen_inference_graph.pb', 'graph.pbtxt')
 
img = cv.imread('example.jpg')
rows = img.shape[0]
cols = img.shape[1]
cvNet.setInput(cv.dnn.blobFromImage(img, size=(300, 300), swapRB=True, crop=False))
cvOut = cvNet.forward()
 
for detection in cvOut[0,0,:,:]:
    score = float(detection[2])
    if score > 0.3:
        left = detection[3] * cols
        top = detection[4] * rows
        right = detection[5] * cols
        bottom = detection[6] * rows
        cv.rectangle(img, (int(left), int(top)), (int(right), int(bottom)), (23, 230, 210), thickness=2)
        cv.putText(img, str(score), (int(right), int(bottom)), cv.FONT_HERSHEY_SIMPLEX, 1, (23, 230, 210), 2)
 
cv.imshow('img', img)
cv.waitKey()
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值