当前位置:   article > 正文

OpenCV物体检测分类_opencv物体识别

opencv物体识别

一、前言

物体检测分类是一种机器学习任务,旨在识别图像或视频中的物体,并将其分为不同的类别。与传统的物体分类任务不同,物体检测分类不仅可以确定图像中物体的类别,还可以确定它们在图像中的位置和边界框。

物体检测分类通常涉及以下步骤:

  1. 数据收集和标注:收集包含不同类别物体的图像或视频数据,并进行标注,标注包括每个物体的类别和边界框信息。

  2. 特征提取:使用图像处理和计算机视觉技术,从收集的图像中提取有用的特征。这些特征可以包括颜色直方图、纹理特征、形状描述符等。

  3. 模型训练:使用机器学习算法或深度学习模型,将提取的特征与标注的类别和边界框进行训练。常用的深度学习模型包括卷积神经网络(Convolutional Neural Networks,CNN)和目标检测模型,如Faster R-CNN、YOLO等。

  4. 模型评估和调优:通过在测试集上评估模型的性能,如准确率、召回率、精确度等指标,来评估模型的性能。如果模型表现不佳,可以进行调优,例如增加训练数据、调整模型参数等。

  5. 预测和应用:使用训练好的模型对新的图像或视频进行预测,识别和分类其中的物体,并生成边界框以及对应的类别标签。

物体检测分类在许多应用领域都有广泛的应用,包括自动驾驶、视频监控、物体识别和图像搜索等。它可以帮助计算机理解图像中的物体内容,为各种实际问题提供解决方案。

而卷积神经网络训练目标检测模型,受机器、显卡等资源影响较大,对很多数人来说是不友好的。这里介绍一款在线工具Teachable Machine,它可以帮助用户无需编写代码就能创建自己的机器学习模型。Teachable Machine的目标是使机器学习技术更加普及和易于理解,使更多的人能够利用机器学习来解决各种问题。

二、Teachable Machine

Teachable Machine的使用很简单,如下所示:

1.首页

 2.训练

可以使用Teachable Machine创建自定义模型来分类图像、识别物体、检测姿势、识别声音等等。

这里我们选择图像检测分类:

 接下来分别导入100张(越多越准确)猫和狗的图像,进行训练。

 点击Train Model

 训练结束,点击Export Model,接着如下下载模型

 下载解压后,可以得到训练好的模型keras_model.h5和label.txt

 三、实战

项目介绍:使用OpenCV和上述训练好的模型,快速实现猫、狗的检测分类,效果如下:

 1.安装环境

  1. pip install cvzone
  2. pip install opencv-python
  3. pip install tensorflow

 2.代码

  1. import cv2
  2. import os
  3. import cvzone
  4. from cvzone.ClassificationModule import Classifier
  5. cap = cv2.VideoCapture('Wait_detection/dog.51.jpg') # 加载图片
  6. # cap = cv2.VideoCapture(0) 视频检测
  7. imgAnimalsList = [] # 物体列表
  8. pathFolderAnimal = "animals" # 物体文件
  9. pathlist = os.listdir(pathFolderAnimal)
  10. # print(pathlist)
  11. for path in pathlist:
  12. print(path)
  13. imgAnimalsList.append(cv2.imread(os.path.join(pathFolderAnimal, path), cv2.IMREAD_UNCHANGED))
  14. maskClassifier = Classifier('model/keras_model.h5', 'model/labels.txt') # 引入模型
  15. label_file = open('model/labels.txt', "r")
  16. list_labels = [] # 可检测的物体名称列表
  17. for line in label_file:
  18. stripped_line = line.strip()
  19. list_labels.append(stripped_line)
  20. label_file.close()
  21. # print(list_labels[1])
  22. while True:
  23. _, img = cap.read()
  24. # imgresize = cv2.resize(img, (454, 340))
  25. # 图像宽、高
  26. w = int(cap.get(3))
  27. h = int(cap.get(4))
  28. imgbackgoround = cv2.imread('background.png') # 背景图片
  29. predection = maskClassifier.getPrediction(img) # 检测
  30. print(predection)
  31. # print(predection[1])
  32. id = predection[1] # 物体id
  33. imgbackgoround = cvzone.overlayPNG(imgbackgoround, imgAnimalsList[id], (910, 150)) # 输出检测到的物体
  34. imgbackgoround[148:148 + h, 159:159 + w] = img # 待检物体图片
  35. cv2.putText(imgbackgoround, str(list_labels[id]),
  36. (990, 120), cv2.FONT_HERSHEY_COMPLEX, 2, (0, 255, 1), 2) # 检测出的物体名称
  37. print(list_labels[id])
  38. # cv2.imshow("Image", img)
  39. cv2.putText(imgbackgoround, 'result:', (830, 120), cv2.FONT_HERSHEY_PLAIN, 3, (0, 255, 0), 3)
  40. cv2.imshow("Output", imgbackgoround)
  41. cv2.waitKey(0) # 按任意键退出

检测猫:

 最后,也可以参考完整项目文件

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/765068
推荐阅读
相关标签
  

闽ICP备14008679号