两周前收到老师要求参加模式识别比赛,大概内容是检测视频中出现的人脸,然后进行数目统计,一开始看到后毫无头绪的,毕竟这是第一次接触机器视觉类,完全没有方向,后来在同学的见一下开始学习OPENCV,也一直帮我调试程序,在这里也谢谢他了。第一次写也不知道算不算原创,如果有任何违规的地方请告知我,我会更改和删除,谢谢。

开始的学习

大二的时候多少接触过51,32类的单片机,印象最深的便是基于STM32的OPENMV,可及时调用的现成库和机器视觉的第一次惊艳到了我,就先去网上找了CV的入门视频,大概明白了编程环境,语言等。虽然同学安利VSCODE,但最后还是用了Pycharm,语言是Python 3.5。当然在这过程中看了不少CSDN上大佬的文章受益匪浅。

功能代码

借鉴的大佬们的博客:
https://blog.csdn.net/qq_40985985/article/details/108364144
https://blog.csdn.net/sinat_26917383/article/details/70287521
https://blog.csdn.net/haoji007/article/details/106368793/ (原文:https://zhuanlan.zhihu.com/p/80328340)
由于比赛要求特殊(我自己感觉是这样的),没有事先给素材进行模型训练,因此不能跑神经网络等算法,看了上面大佬们的博客,决定采用OPENCV自带的级联器+差值哈希算法来实现,感谢各位前辈们的付出

import cv2# 差异值哈希算法
def dhash(image):# 将图片转化为8*8image = cv2.resize(image, (9, 8), interpolation=cv2.INTER_CUBIC)# 将图片转化为灰度图dhash_str = ''for i in range(8):for j in range(8):if image[i, j] > image[i, j + 1]:dhash_str = dhash_str + '1'else:dhash_str = dhash_str + '0'result = ''for i in range(0, 64, 4):result += ''.join('%x' % int(dhash_str[i: i + 4], 2))# print("dhash值",result)return resultif __name__ == '__main__':faceGascade = cv2.CascadeClassifier("Resources/haarcascade_frontalface_alt2.xml")# 调用级联器cap = cv2.VideoCapture("Resources/test1.mp4")# 捕获视频帧# cap = cv2.imread("Resources/1.png")list1 = []list2 = []flag = 1while cap.isOpened():success, frame = cap.read()if not success:breakImgGray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)# 转换为灰度图像,在这里转换了,因此计算哈希值时的图像转换被我删除了ImgGray2 = ImgGray[200:1240, 0:2560]# 将图像进行了裁剪,因为素材时一段监控录像,怕上面时间日期等影响效果ImgGray2 = cv2.resize(ImgGray2, (0, 0), fx=0.5, fy=0.5, interpolation=cv2.INTER_AREA)# 缩小了图像的分辨率来加快识别速度faces = faceGascade.detectMultiScale(ImgGray2, 1.2, 10)for (x, y, w, h) in faces:cv2.rectangle(ImgGray2, (x, y), (x+w, y+h), (255, 0, 0), 2)image = (ImgGray2[y:y+h, x:x+w])hash2 = dhash(image)if flag == 1:flag = 0list1.append(hash2)list1.append(hash2)n = 0j = 0for g in range(len(list1)-1):# for hash1 in list1:for k in range(len(list1[g])):if (list1[g])[k] == hash2[k]:n = n + 1m = nn = 0# print(m)if m > 6:j = j+1else:passif j == 0:list2.append(hash2)# 来查重比较新捕获哈希值是否重复print(len(list2))# 打印出捕获的哈希值数量,即识别到的人数cv2.imshow('video', ImgGray2)cv2.waitKey(1)cap.release()cv2.destroyAllWindows()

总结

不断捕获人脸的哈希值,然后删除重复的并添加新的,通过改变

faces = faceGascade.detectMultiScale(ImgGray2, 1.2, 10)

1.210两个参数

if m > 6:j = j+1

还有m,哈希值的重复位数来调整检测结果,最终达到一个速度和准确度都满意的值。
由于用于练习的视频是监控录像,截图什么的就不放出了,最后感谢帮我指路和调试程序的同学,也再次感谢各位前辈,前人种树后人乘凉。

基于OPENCV的人脸识别学习笔记相关推荐

  1. 基于OpenCV实现人脸识别--Python

    目录 前言 第一章 OpenCV介绍 第二章 功能描述 2.1 对已有的数据进行检测 2.2 陌生人检测并发出警告 2.3 保存陌生人的视频 2.4 输入图片进行检测 2.5 现场录用信息 第三章 功 ...

  2. Python基于OpenCV的人脸表情识别系统[源码&部署教程]

    1.项目背景 人脸表情识别是模式识别中一个非常重要却十分复杂的课题.首先对计算机人脸表情识别技术的研究背景及发展历程作了简单回顾.然后对近期人脸表情识别的方法进行了分类综述.通过对各种识别方法的分析与 ...

  3. 【零基础跑项目】20代码教你基于opencv的人脸检测

    20代码教你基于opencv的人脸检测

  4. 基于opencv实现人脸检测

    基于opencv实现人脸检测 opencv简述 opencv是一个开源的计算机视觉库,它有着C++,Python,Java等接口,支持Windows,Linux,Mac OS,IOS 和 Androi ...

  5. 基于OpenCV的人脸识别自助商店(源码&部署视频)

    1.模块功能介绍 实现人脸识别模块.人脸登录与注册功能.商店显示和用户余额页显示功能 用GUl图形界面实现(pyqt)语言python windows下软件pycharm 1.用户登录模块:刷脸登录 ...

  6. 树莓派 --- 基于OpenCV实现人脸识别

    目录 参考博客 调百度人脸识别的API也能达到目的,我这里是基于OpenCV进行人脸识别 OpenCV(Open source Computer Vision Library) 是一个开源的计算机视觉 ...

  7. Python基于OpenCV的人脸识别自助商店(源码&部署视频)

    1.模块功能介绍 实现人脸识别模块.人脸登录与注册功能.商店显示和用户余额页显示功能 用GUl图形界面实现(pyqt)语言python windows下软件pycharm 1.用户登录模块:刷脸登录 ...

  8. 【优秀毕设】基于OpenCV的人脸识别打卡/签到/考勤管理系统(最简基本库开发、可基于树莓派)

    [优秀毕设]基于OpenCV的人脸识别打卡/签到/考勤管理系统(最简基本库开发.可基于树莓派) 该系统利用Harr级联检测和LPBH进行人脸检测和训练.识别 利用Tkinter完成界面搭建 利用Fla ...

  9. 基于OpenCV的人脸识别系统的pyhon源代码

    本论文主要阐述了基于OpenCV的人脸识别原型系统.基于生物特征识别的身份认证方法有指纹.掌纹.眼睛虹膜.人脸等,其中,由于人脸的稳定性和可见性,人脸识别的研究与应用成为热点,本文针对出租公寓安全管理 ...

最新文章

  1. 视频程式化的基于帧差异的时间损失
  2. 一个实用技巧,告别手动画图,自动生成数据库 ER 图|原创
  3. CAN总线简明易懂教程(一)
  4. Spring Cloud Alibaba - 17 Nacos Config 配置中心 应用篇
  5. ROS | ROS2安装(Ubuntu 16.04版本:通过Debian包安装)
  6. android studio的一个bug
  7. windows,安装yafu,RSA应用
  8. CPU检测软件CPU-Z的下载使用
  9. 伯克利CS61A-Sum2019-Week1
  10. 六款强大的开源数据挖掘工具
  11. 测试用例方法--错误推测法
  12. 分布式文件系统(DFS)浅析
  13. 用户 用户组 切换用户
  14. 数组----二维数组
  15. 小米MIUI手机adb连接教程
  16. scratch学习-基础-认识scratch
  17. BZOJ2277[Poi2011]Strongbox——数论
  18. FPGA控制DDS_AD9850输出正弦波(“并行spi”)
  19. JAVA使用JCo连接SAP介绍
  20. ChromeDriver与Chrome版本对应关系

热门文章

  1. SiamFC代码大乱炖 (pytorch)
  2. NVE-01-2015-11090:SSL/TLS 受诫礼(BAR-MITZVAH)攻击漏洞(CVE-2015-2808) [端口: 443]
  3. js小孩翻书动态实现效果
  4. pytorch笔记(三)归一化 FRN、MABN
  5. Flash MusicLoader
  6. 【iOS】百度网盘秒传链接/标准码的转存
  7. 干货:用什么姿势,去写一手好SQL ?
  8. 基于51单片机智能台灯
  9. 绩效焦虑–关于绩效不可预测性,度量和基准
  10. 江西省政务服务管理办公室副主任陈钢一行调研红谷滩区·高通中国·影创联合创新中心