Python 使用Opencv实现目标检测与识别的示例代码
作者:Xy-Huang 发布时间:2023-01-23 17:46:11
标签:Opencv,目标检测,识别
在上章节讲述到图像特征检测与匹配 ,本章节是讲述目标检测与识别。后者是在前者的基础上进一步完善。
在本章中,我们使用HOG算法,HOG和SIFT、SURF同属一种类型的描述符。功能代码如下:
import cv2
def is_inside(o, i):
ox, oy, ow, oh = o
ix, iy, iw, ih = i
# 如果符合条件,返回True,否则返回False
return ox > ix and oy > iy and ox + ow < ix + iw and oy + oh < iy + ih
# 根据坐标画出人物所在的位置
def draw_person(img, person):
x, y, w, h = person
cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 255), 2)
# 定义HOG特征+SVM分类器
img = cv2.imread("people.jpg")
hog = cv2.HOGDescriptor()
hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())
found, w = hog.detectMultiScale(img, winStride=(8, 8), scale=1.05)
# 判断坐标位置是否有重叠
found_filtered = []
for ri, r in enumerate(found):
for qi, q in enumerate(found):
a = is_inside(r, q)
if ri != qi and a:
break
else:
found_filtered.append(r)
# 勾画筛选后的坐标位置
for person in found_filtered:
draw_person(img, person)
# 显示图像
cv2.imshow("people detection", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
运行结果如图所示:
这个例子是使用HOG特征进行SVM算法训练,这部分已开始涉及到机器学习的方面,通过SVM算法训练数据集,然后根据某图像与数据集进行匹配。
来源:https://blog.csdn.net/HuangZhang_123/article/details/80746847


猜你喜欢
- 最近在备考软考的软件设计师考试,在学习过程遇到很多于计算机基础计算相关的知识点,正好最近在学Go语言,所以就把计算的方式用Go语言实现一下。
- 一、背景我们日常测试中存在大量重复的造数操作,且流程较长,为了提升测试效率,我们搭建了数据构造平台。平台采用了前端 + 脚本分离的形式,数据
- PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Proje
- 一个懒加载的树状表格实例实现一个树状表格,需要用到vxe-table这个库,虽然element-ui也能实现,但这个库是专门针对表格做了更多
- Pytorch中torch.nn.Softmax的dim参数使用含义涉及到多维tensor时,对softmax的参数dim总是很迷,下面用一
- 1.mysql复制概念 指将主数据库的DDL和DML操作通过二进制日志传到复制服务器上,然后在复制服务器上将这些日志文件重新执行
- Python 功能真的很强,强大到让人吃惊,它能做的事囊括爬虫、数据分析、数据可视化、游戏等等各方面,这些功能在实际的使用中应用广泛,开发程
- 字典与json字符串区别# python 中的字典格式,是dict类型{'a': 'sd'}如果声明a =
- 单来说,vue-resource就像jQuery里的$.ajax,用来和后端交互数据的。可以放在created或者ready里面运行来获取或
- 本文实例讲述了Python多进程机制。分享给大家供大家参考。具体如下:在以前只是接触过PYTHON的多线程机制,今天搜了一下多进程,相关文章
- String含义:String是一个封装char[]数组的对象,字符串不可变String str = “abc&
- 本文实例为大家分享了JSP学生信息管理系统源码,JSP+Servlet+Javabean+JDBC+MySQL,供大家参考,具体内容如下1.
- xlabel(‘time',‘FontSize',12);如果没有设置位置,默认是在中间在xlabel中也有position
- function toBreakWord(intLen, id){ var obj=document.getElementById(id);
- enumerate函数enumerate是一个Python内置函数,一个功能强大的内置函数。其实功能强大不足以形容它, 但是很难用一个词来形
- 继续Mootools常用方法扩展,依然还是String类的扩展。方法:format说明:一个非常简单的format方法,和C#
- 协程中未处理的异常会向上冒泡,传给 next 函数或 send 方法的调用方(即触发协程的对 象)。下面示例举例说明如何使用之前博客示例中由
- 现在需要一个写文件方法,将selenium的脚本运行结果写入test_result.log文件中首先创建写入方法def write_resu
- 大家都知道,在通过Pyqt4的designer工具创建界面.ui文件后需要手动cmd命令将.ui文件转换为.py之后才能进行事件的编写,如果
- 本文实例讲述了Python面向对象之类和对象。分享给大家供大家参考,具体如下:类和对象(1)对象是什么?对象=属性(静态)+方法(动态);属