使用OpenCV进行对象检测

重磅干货,第一时间送达

目标检测是图像处理的重要组成部分。自动驾驶汽车必须检测车道,路面,其他车辆,人,标志和信号等。我们生活在一个动态的世界中,一切都在不断变化。对象检测的应用无处不在。

我们正在研究自动驾驶汽车的深度学习和计算机视觉。特征检测是对象检测的任务之一。那么,什么是特征检测?对于人类,我们了解图案,形状,大小,颜色,长度以及其他可识别物体的物体。它也有点类似于计算机。

特征可以是形状,边缘,长度等任何形式,也可以是所有特征的组合。在我们之前有DeepFake检测的项目,我们使用MSE(均方误差),PSNR(峰值信噪比),SSIM(结构相似性指数)和直方图作为特征从真实图像中识别DeepFake图像。

一个好的算法必须是可重复的和可扩展的。例如,假设目标是从大量图像中检测狗,其中还包含猫和其他动物的图像。

关于特征的表述,它必须是独特的,并且需要在大多数数据中显示。如果我们有大部分与上述两张图片相似的图片,那么这里的不好的特征是什么?

在这种情况下,一个不好的特征就是耳朵的大小。我们的理解是狗耳朵的大小通常较大。但这不是示例图像中的原因。在第一个图像中,狗的耳朵与猫相似,甚至更小。如果我们仅使用耳廓大小作为特征来仅使用这两个图像来训练模型,则我们将有50%的真阴性或假阳性。这带来了另一个重要的观点。如果您想在模型中获得更高的成功,则应谨慎选择该功能。大小尺寸也不是一个好的特征。

我们的目标是识别其他物体,例如道路上的卡车。我们可以使用哈里斯角点检测或精巧边缘检测之类的技术来检测边缘。我们需要将汽车,行人,标志与图像分开。我们可以使用OpenCV专门识别卡车。

import cv2cv2.matchTemplate()

模板匹配只是一种将输入图像复制到模板图像上,并在模板图像下比较模板图像和输入图像的技术。它返回一个灰度图像,表示该模板与多少个像素匹配。OpenCV提供了许多模板匹配方法。这是相关系数的数学公式。

一旦在两个图像中都找到匹配项,它将选出相似点。OpenCV官方文档在此处提供了带有代码示例的详细信息。让我们找到路上的卡车。

import cv2import numpy as npimport matplotlib.image as mpimgfrom matplotlib import pyplot as plt%matplotlib inlineimage_color =cv2.imread('actual_truck.jpg')plt.imshow(image_color)

我们从文件中读取图像。我们将在此图像中找到卡车。

图像高度和宽度
将图像转换为灰度

使用灰度的原因是使图像尽可能简单。不需要彩色图像。颜色增加了图像的复杂度,并增加了信噪比。

image_gray = cv2.cvtColor(image_color,cv2.COLOR_BGR2GRAY)plt.imshow(image_gray,cmap ='gray')
创建模板图像

这是我们的模板图像。OpenCV使用此图像收集了特征并找到了卡车。

import cv2import numpy as npimport matplotlib.image as mpimgfrom matplotlib import pyplot as plt%matplotlib inlineimage_color =cv2.imread('sample_truck.jpg')x= 235y = 350h = 200w = 150cropped=image_color[y:y+h, x:x+w]plt.imshow(cropped)status = cv2.imwrite('t.jpg', cropped)print("Image written to file-system :",status)
执行模板匹配
# Perform template matching using OpneCVresult = cv2.matchTemplate(image_gray,template, cv2.TM_CCOEFF_NORMED)print(result.shape)plt.imshow(result)
找到卡车
min_val, max_val, min_loc, max_loc =cv2.minMaxLoc(result)top_left = max_locbottom_right = (top_left[0] + w,top_left[1] + h)cv2.rectangle(image_color, top_left,bottom_right, (10,10,255), 5)plt.imshow(image_color)
结论

我们介绍了什么是图像处理及其应用。然后我们讨论有关cv2.matchTemplate()。最后,我们使用模板匹配来识别道路上的卡车。

下载1:OpenCV-Contrib扩展模块中文版教程
(0)

相关推荐

  • Python进阶——OpenCV之Core Operations

    文章目录 图像基本操作 访问并修改像素值 访问图像的属性 设置图像区域 图像分割与合并 画图像边框 图像的数学操作 图像叠加 图像融合 图像位操作 Python OpenCV代码检测与速度优化 时隔一 ...

  • python+opencv图像处理(十二)

    图像仿射变换和透视变换 天晴了...... 1.仿射变换 图像的仿射变换就是图像的旋转加上拉升,说直白点,就是把矩形变成平行四边形. 要把矩形变成平行四边行,只需要拉伸其四个角点就行了,事实上,只需要 ...

  • python+opencv图像处理(十四)

    图像直方图 1.灰度图像的直方图 灰度图像的直方图是灰度级和这种灰度级的概率之间关系的图形. 直接看图,下图中左侧是原图,右图为其直方图. 完整代码如下: import cv2 as cv impor ...

  • 边缘和轮廓检测——计算机视觉的应用

    计算机视觉的重点是从计算机中的视频和图像中提取有意义的信息.在本文中,我们将从初学者开始探索一个使用 OpenCV 的出色计算机视觉项目. 其标题是"使用计算机视觉进行边缘和轮廓检测&quo ...

  • CV:基于人工智能算法实现人脸口罩的实时检测(结合无人机可,实现实时警告提醒)

    CV:基于人工智能算法实现人脸口罩的实时检测(结合无人机可,实现实时警告提醒) 输出结果 实现代码 参考文章:CV:基于人工智能算法实现人脸口罩的实时检测(结合无人机可,实现实时警告提醒)--代码 更 ...

  • python+opencv图像处理(十五)

    直方图均衡 直方图均衡化是通过对图像的直方图进行修正来获得图像增强效果的方法,主要是进行对比度增强,就是让亮的更亮,暗的更亮. 1.灰度图像的直方图均衡 先上图看效果. 如图上标题所示,第一张是原图, ...

  • opencv DNN模块之YOLO(Darknet)对象检测

    原理 自行百度,本人不擅长 YOLO 来自darknet对象检测框架 基于COCO数据集,能检测80个类别 YOLO V3版本 https://pireddie.com/darknet/yolo 每种 ...

  • (4条消息) OpenCV DNN之YOLO实时对象检测

    OpenCV在3.3.1的版本中开始正式支持Darknet网络框架并且支持YOLO1与YOLO2以及YOLO Tiny网络模型的导入与使用.YOLO是一种比SSD还要快的对象检测网络模型,算法作者在其 ...

  • ML.NET 示例:对象检测-ASP.NET Core Web和WPF桌面示例

    dotNET跨平台 今天以下文章来源于My IO ,作者My IO My IO记录工作和生活,将输入变成输出ML.NET 版本API 类型状态应用程序类型数据类型场景机器学习任务算法v1.5.0动态A ...

  • 用于AI对象检测的多阶段Docker构建

    容器技术(例如Docker)可简化依赖关系管理并提高软件的可移植性.在本系列文章中,我们探讨了Docker在机器学习(ML)场景中的用法. 本系列假定您熟悉AI/ML,一般的容器化,尤其是Docker ...

  • 10分钟学会使用YOLO及Opencv实现目标检测

    来源:新机器视觉 来自:小白学视觉 著作权归作者所有,本文仅作学术分享,若侵权,请联系后台删文处理 计算机视觉领域中,目标检测一直是工业应用上比较热门且成熟的应用领域,比如人脸识别.行人检测等,国内的 ...

  • 实战:基于OpenCV的人眼检测

    重磅干货,第一时间送达 一.背景 无论学习什么,实践都非常重要.如果打算学习OpenCV.Numpy等Python库,那么这简单的12行代码很适合实践并体验这些库的实时使用. 二.OpenCV库 Op ...

  • (4条消息) 10分钟学会使用YOLO及Opencv实现目标检测(上)|附源码

    计算机视觉领域中,目标检测一直是工业应用上比较热门且成熟的应用领域,比如人脸识别.行人检测等,国内的旷视科技.商汤科技等公司在该领域占据行业领先地位.相对于图像分类任务而言,目标检测会更加复杂一些,不 ...

  • 对象检测和图像分割有什么区别?

    重磅干货,第一时间送达 01.人工智能中的图像预处理 对象检测和图像分割是计算机视觉的两种方法,这两种处理手段在人工智能领域内相当常见,本文将介绍对象检测和图像分割之间的区别. 在这两个任务中,我们都 ...

  • 基于OpenCV的手掌检测和手指计数

    重磅干货,第一时间送达 利用余弦定理使用OpenCV-Python实现手指计数与手掌检测. 手检测和手指计数 接下来让我们一起探索以下这个功能是如何实现的. OpenCV OpenCV(开源计算机视觉 ...