Python 使用Opencv实现目标检测与识别的示例代码

时间:2021-05-22

在上章节讲述到图像特征检测与匹配 ,本章节是讲述目标检测与识别。后者是在前者的基础上进一步完善。
在本章中,我们使用HOG算法,HOG和SIFT、SURF同属一种类型的描述符。功能代码如下:

import cv2def 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算法训练数据集,然后根据某图像与数据集进行匹配。

到此这篇关于Python 使用Opencv实现目标检测与识别的示例代码的文章就介绍到这了,更多相关Opencv 目标检测与识别内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章