文章目录

  • ORB算法
  • 视频读写
  • 图像人脸识别
  • 摄像头实时人脸检测

ORB算法

orb算法结合了Fast和Brief算法,提出了构造金字塔,为Fast特征点添加了方向,从而使得关键点具有了尺度不变性和旋转不变性。

# orb算法结合了Fast和Brief算法,提出了构造金字塔,为Fast特征点添加了方向,从而使得关键点具有了尺度不变性和旋转不变性。import  numpy as np
import  cv2 as cv
import matplotlib.pyplot as plt;
img=cv.imread('opencv_4.png')orb=cv.ORB_create(nfeatures=5000)kp,des=orb.detectAndCompute(img,None)img2=cv.drawKeypoints(img,kp,None,color=(0,0,255),flags=0)plt.figure(figsize=(10,8),dpi=100)
plt.imshow(img2[:,:,::-1])
plt.xticks([]),plt.yticks([])
plt.show()

视频读写

import numpy as np
import  cv2 as cv
cap=cv.VideoCapture('opencv_5.wmv')
while(cap.isOpened()):ret,frame=cap.read()if ret ==True:cv.imshow('frame',frame)if cv.waitKey(25)&0xFF==ord('q'):break
cap.release()
cv.destroyWindow()

图像人脸识别

第一个写的,但是debug还是没有调试出来

import cv2 as cv
import matplotlib.pyplot as plt
img=cv.imread('img.png')
gray=cv.cvtColor(img,cv.COLOR_RGB2GRAY)# 实例化Openncv人脸和眼睛识别的分类器
face_cas=cv.CascadeClassifier("D:/anaconda3/anaconda3/envs/MachineLearning/Library/etc/haarcascades/haarcascade_frontalface_default.xml")
face_cas.load('haarcascade_frontalface_default.xml')eye_cas=cv.CascadeClassifier("D:/anaconda3/anaconda3/envs/MachineLearning/Library/etc/haarcascades/haarcascade_eye.xml")
eye_cas.load("haarcascade_eye.xml")# 调用识别人脸
face_rects=face_cas.detectMultiScale(gray,scaleFactor=1.2,minNeighbors=3,minSize=(50,50))
for faceRects in face_rects:x,y,w,h =faceRects
#框出人脸
cv.rectangle(img,(x,y),(x+h,y+w),(0,255,0),3)
# 在识别出的人脸中进行眼睛的检测
roi_color=img[y:y+h,x:x+w]
roi_gray=gray[y:y+h,x:x+w]
eyes=eye_cas.detectMultiScale(roi_gray)
for(ex,ey,ew,eh) in eyes:cv.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)# 检测结果绘制
plt.figure(figsize=(8,6),dpi=100)
cv.imshow(img,"img")
cv.waitKey(0)

第二个:

import  cv2 as cv
import mediapipe as mp
# 进度条库
import  tqdmimport matplotlib.pyplot as plt# 定义可视化函数
def look_img(img):img_RGB=cv.cvtColor(img,cv.COLOR_BGR2RGB)plt.imshow(img_RGB)plt.show()# 导入BlazeFace人脸检测模型
mp_face_detection=mp.solutions.face_detection# help(mp_face_detection.FaceDetection)model=mp_face_detection.FaceDetection(min_detection_confidence=0.5,#置信度阈值,过滤掉小于置信度 的预测框model_selection=0,#选择模型,0适用于人脸距离镜头近(2m以内),1适用于距离远(5m以内)
)img=cv.imread('img.png')
look_img(img)# 将图像输入模型,获取预测结果
img_RGB=cv.cvtColor(img,cv.COLOR_BGR2RGB)result=model.process(img_RGB)print(result.detections)
# 上面可以看到所有人脸检测效果坐标
'''relative_bounding_box {xmin: 0.23513855040073395ymin: 0.3091171085834503width: 0.5619093179702759height: 0.5618590116500854}以上是输出结果,,证明只有一个人脸框的相对信息,的确图片中也只有一个人像
'''# 可视化人脸检测结果
mp_drawing=mp.solutions.drawing_utilskeypoint_style=mp_drawing.DrawingSpec(thickness=5,circle_radius=5,color=(0,255,0))# 人脸检测框样式
box_style=mp_drawing.DrawingSpec(thickness=5,circle_radius=5,color=(255,0,0))# 可视化人脸关键点和人脸框
annotated_image=img.copy()
for detection in result.detections:mp_drawing.draw_detection(annotated_image,detection,keypoint_drawing_spec=keypoint_style,bbox_drawing_spec=box_style)look_img(annotated_image)
cv.imwrite('TestA',annotated_image)

摄像头实时人脸检测

主要运用了mediapipe包,可以调用摄像头并且显示多个人脸的时候都可以进行识别,测试时还可以识别出图片和动物的头像

import mediapipe  as  mp
import cv2 as cv
from tqdm import tqdm
import time# 导入模型
mp_face_detection=mp.solutions.face_detection
model=mp_face_detection.FaceDetection(min_detection_confidence=0.5,model_selection=0,
)# 导入可视化样式
# 可视化人脸检测结果
mp_drawing=mp.solutions.drawing_utilskeypoint_style=mp_drawing.DrawingSpec(thickness=5,circle_radius=5,color=(0,255,0))# 人脸检测框样式
box_style=mp_drawing.DrawingSpec(thickness=5,circle_radius=5,color=(255,0,0))# 处理单帧的函数
def process_frame(img):#记录该帧处理的开始时间start_time=time.time()img_RGB=cv.cvtColor(img,cv.COLOR_BGR2RGB)result=model.process(img_RGB)if result.detections:for detection in result.detections:mp_drawing.draw_detection(img,detection,keypoint_drawing_spec=keypoint_style,bbox_drawing_spec=box_style)#记录该帧处理完毕的时间end_time=time.time()#计算每秒处理图像的帧数FPSFPS=1/(end_time-start_time)scaler=1img=cv.putText(img,'FPS'+str(int(FPS)),(25*scaler,50*scaler),cv.FONT_HERSHEY_SIMPLEX,1.25*scaler,(255,0,0),1,8)return img#调用摄像获取每帧
cap=cv.VideoCapture(0)cap.open(0)
# 无限循环,直到break被触发
while cap.isOpened():success,frame=cap.read()# if not success:#     print('ERROR')#     breakframe=process_frame(frame)#展示处理后的三通道图像cv.imshow('my_window',frame)if cv.waitKey(1) &0xff==ord('q'):breakcap.release()
cv.destroyAllWindows()


opencv算法+人脸检测相关推荐

  1. opencv实现人脸检测、性别和年龄预测

    opencv实现人脸检测.性别和年龄预测 文章目录: 一.下载预训练的模型 1.下载模型 2.模型说明 二.实现步骤 1.加载模型 2.人脸检测 3.性别与年龄预测 4.完整代码 主要是通过openc ...

  2. 使用OpenCV进行人脸检测(Viola-Jones人脸检测方法)

    扩展阅读: OpenCV用于人脸检测 参考文献:Paul Viola, Michael J. Jones. Robust Real-Time Face Detection[J]. Internatio ...

  3. 利用OpenCV实现人脸检测

    如何在一副图片中检测到人脸,这涉及到计算机图形学中一些非常复杂的计算,如果这些计算都靠程序员自己来编程,那么工作量就相当大.OpenCV全称是Open Computer Vision,是指开放的计算机 ...

  4. opencv(人脸检测和识别)

    Opencv的人脸检测函数,定义了具体可跟踪对象类型的数据文件. Haar级联分类器,通过对比分析相邻图像区域来判断给定图像或子图像与已知对象是否匹配. 两个图像的相似程度可以通过它们对应特征的欧式距 ...

  5. 使用OpenCV进行人脸检测和戴墨镜特效实战(附Python源码)

     需要源码和图片请点赞关注收藏后评论区留言私信~~~ 人脸识别是基于人的脸部特征信息进行身份识别的一种生物识别技术,也是计算机视觉重点发展的技术.机器学习算法诞生之后,计算机可以通过摄像头等输入设备自 ...

  6. 基于opencv的人脸检测与识别(python)(1)

    基于opencv的人脸检测与识别(python语言)(1) 人脸检测和识别技术就目前而言,已经相对成熟,各类算法层出不穷,这都归功于各位奋斗在一线的大佬的努力(站在巨人的肩膀上的感觉就是爽).本文是参 ...

  7. OpenCV 正面人脸检测

    继续整理之前做的OpenCV人脸检测,这次先贴出利用OpenCV自带的人脸haar特征分类器进行人脸检测的例子: OpenCV中人脸检测用的是harr或LBP特征,分类算法用的是adaboost算法, ...

  8. Python图像处理,cv2模块,OpenCV实现人脸检测蔡徐坤

    前言 利用Python实现OpenCV实现人脸检测,废话不多说~ 让我们愉快地开始吧~ 开发工具 Python版本: 3.6.4 相关模块: cv2模块: 以及一些Python自带的模块. 环境搭建 ...

  9. flutter 人脸检测_【转载】opencv实现人脸检测

    全文转载自CSDN的博客(不知道怎么将CSDN的博客转到博客园,应该没这功能吧,所以直接复制全文了),转载地址如下 http://blog.csdn.net/lsq2902101015/article ...

最新文章

  1. gSOAP 在windows下的安装与使用(mingw32)
  2. 测试必知的150个Linux命令
  3. 最后8小时 | 最新智能驾驶视觉技术行业研究报告出炉!圈内从业者、投资人不可错过...
  4. MySQL高级 - 常用工具 - mysqlbinlog与mysqldump
  5. 数据同步云端本地_如何从云端删除Windows 8的同步数据
  6. 微信小程序+TP5——token令牌生成
  7. C语言程序设计打鱼还是晒网,C语言编程三天打鱼两天晒网
  8. linux主机慢的原因,51CTO博客-专业IT技术博客创作平台-技术成就梦想
  9. Linux container_of用法
  10. 静态页面编写规范02
  11. myeclipse以及tomcat乱码解决
  12. 基于切比雪夫多项式的简单GCN网络
  13. 2017 我所分享的技术文章总结(下)
  14. 七大开放式联网企业商业模式
  15. Neo4j 实战篇(一)基于Py2Neo构建电影知识图谱
  16. 黑马程序员_Java基础_前期准备02-1
  17. Tomcat启动问题汇总
  18. 共享免费世界地图OpenStreetMap(OSM)
  19. 艾永亮:超级产品战略助戴森品牌C位出道,它却在汽车行业栽跟头
  20. 鸟和飞机都能飞行,使用代码写一个方法完成鸟的子类比如鹰,麻雀的飞行,还有飞机的飞行

热门文章

  1. Redis安装与卸载
  2. 【注意事项】Markdown遇到的小问题
  3. 【hexo】搭建个人bolg日志 day1
  4. Error: Gradle project sync failed. Please fix your project and try again.
  5. java jdk 环境变量配置(window 10 系统)
  6. Android全屏,隐藏状态栏和标题栏
  7. TMS Scripter importtool的使用
  8. 随心测试_软测基础_005 测试人员工作内容
  9. [USACO08NOV]lites
  10. iphone html邮件发送,html – iPhone邮件:由于锚标记,表格不会延伸到100%?