OpenCV4.1.2新增的cv2.dnn_DetectionModel 类的用法

最新版本OpenCV4.1.2,针对深度神经网络模块,提供了三个类,通过它们,自动实现输入图像预处理与后处理,直接输出检测结果,支持图像分类、对象检测、图像分割三种常见的视觉常见任务

分别如下:

cv2.dnn_ClassificationModel
cv2.dnn_DetectionModel
cv2.dnn_SegmentationModel

安装

网址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv

找到对应版本的whl文件,下载到\Lib\site-packages文件夹下,然后pip install +文件名 完成安装

cv2.dnn_DetectionModel

以OpenCV自带的SSD人脸检测为例,

1. 获取模型及权重等参数文件 

首先需要运行:sources\samples\dnn\face_detector文件夹下的

download_weights.py

得到res10_300x300_ssd_iter_140000_fp16.caffemodel文件

2. 模型加载

import cv2
#.caffemodel 和.prototxt在\sources\samples\dnn\face_detector文件夹下可找到
faceDetect=cv2.dnn_DetectionModel('res10_300x300_ssd_iter_140000_fp16.caffemodel','deploy.prototxt')

3. 检测函数 cv2.dnn_DetectionModel.detect(frame[, confThreshold[, nmsThreshold]])

参数:

  • frame: 输入的图像
  • confThreshold: 用来过滤选择框的置信度阈值
  • numsThreshold: 非极大值抑制中的阈值

返回:

一个元组,包含(classIds, confidences, boxes)

  • classIds: 类别索引(在SSD人脸检测中,0表示无,1表示有)
  • confidences: 置信度
  • boxes: 检测框坐标,形式为(x, y, width, height)

e.g.

img=cv2.imread('xiaolixun.jpg')
detections=faceDetect.detect(img)
print(detections)

输出:

(array([[1]], dtype=int32), array([[0.99480116]], dtype=float32), array([[202,  79,  78,  90]], dtype=int32))

4. 绘制bounding box

#获取bounding box信息
x,y,width,height=detections[2][0][0:4]
#绘制bounding box
cv2.rectangle(img, (x, y),(x+width, y+height),(0, 0, 255), 2)
cv2.imshow('detect',img)
cv2.waitKey()
cv2.destroyAllWindows()

显示如下:

补充:

以往利用dnn模块进行深度学习时

  1. 通过net=cv2.dnn.readNetFromCaffe('*','*')加载模型
  2. 利用blob=cv2.dnn.blobFromImage进行图像预处理
  3. 利用 net.setInput(blob) detections = net.forward() 获取检测结果
  4. 最后对detections进行后处理,得到bounding box等相关信息

对比发现新增的API极大地方便了小白调用深度学习相关分类,检测,分割等模型。

 

 


PS:

扫码关注微信公众号获取深度学习数据集,总有一款适合你

我们不生产数据,我们只是数据的搬运工

  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: cv2.dnn_detectionmodelOpenCV的一个,用于实现基于深度学习的目标检测模型。它可以加载预训练的模型,对输入图像进行检测,并输出检测结果。该支持多种目标检测算法,如SSD、YOLO等。 ### 回答2: cv2.dnn_detectionmodelOpenCV的一个模块,用于实现物体检测和识别任务。它采用深度学习算法,可以处理各种型的图像数据,并能够识别图像出现的物体及其位置。 cv2.dnn_detectionmodel的主要特点包括以下三个方面: 1. 高效、准确的物体检测:cv2.dnn_detectionmodel采用最新的深度学习算法,能够在大规模图像数据集上进行快速、准确的物体检测。它基于预训练的模型,自动提取图像特征并进行分,从而精准地识别图像的物体。 2. 灵活的模型配置:cv2.dnn_detectionmodel支持多种深度学习模型(如Faster R-CNN、YOLO、SSD等),用户可以根据自己的需求选择合适的模型进行物体检测。此外,cv2.dnn_detectionmodel还支持模型参数的定制,用户可以根据自己的需求调整模型的各种参数,从而获得更好的检测性能。 3. 跨平台支持:cv2.dnn_detectionmodel可以运行在各种不同的计算机平台上,包括Windows、Linux、Mac OS等。它支持各种主流的编程语言(如Python、C++等),可以方便地与其他工具和系统进行集成,从而实现自动化的物体检测和识别任务。 总之,cv2.dnn_detectionmodel是一款高效、准确、灵活、跨平台的物体检测工具,可以帮助用户快速实现各种型的图像识别任务。 ### 回答3: cv2.dnn_detectionmodelOpenCV的一个深度学习模块,用于对象检测任务。该模块利用深度学习的强大能力,可以在图像或视频自动检测出各种对象,如人脸、车辆、行人等。 其基本流程如下: 1. 加载预训练模型:cv2.dnn_detectionmodel支持加载各种深度学习模型,如caffe、TensorFlow等。用户可以根据具体需要选择相应的模型。 2. 输入图像或视频:cv2.dnn_detectionmodel支持从图像、视频流或摄像头输入图像。 3. 对图像进行预处理:由于不同模型对输入图像的要求不同,用户需要根据具体模型进行相应的图像预处理,如归一化、大小调整等。 4. 进行对象检测:利用加载的模型,对输入图像进行对象检测。对象检测的结果包括对象的位置、大小和置信度等。 5. 输出结果:将对象检测的结果输出到屏幕、文本文件或数据库等。 cv2.dnn_detectionmodel具有以下特点: 1. 高效性:利用GPU加速,可以快速进行对象检测。 2. 灵活性:支持加载多种深度学习模型,并可以适应不同尺寸和形状的图像输入。 3. 精度高:通过利用深度学习的自适应能力,可以对各种复杂环境下的对象进行准确的检测。 4. 易用性:OpenCV是一个广泛应用的计算机视觉库,采用cv2.dnn_detectionmodel进行对象检测,可以方便的集成到各种应用程序

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

田土豆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值