opencv算法+人脸检测

article/2025/11/8 10:11:06

文章目录

    • 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()

请添加图片描述
请添加图片描述


http://chatgpt.dhexx.cn/article/p9stgVY9.shtml

相关文章

人脸检测算法对比分析

 https://blog.csdn.net/twinkle_star1314/article/details/53318689 人脸识别包括以下5个步骤:人脸检测、图像预处理、特征提取、匹配、结果输出。 人脸检测是人脸识别中的第一个环节,是一项关键技术。人脸检测是指假设在输入…

人脸检测算法:mtcnn简介

人脸检测算法:MTCNN简介 算法流程网络介绍训练方法 MTCNN是一个针对于人脸检测的模型, 由PNet, RNet, 和ONet三个网络组成,三个网络都比较轻量, 易于训练.基于pytorch的实现可以看我这篇: 链接: l利用celebA数据集训练MTCNN网络. 算法流程 1. 对传入P网络的图片re…

10种轻量级人脸检测算法的比拼

关注并星标 从此不迷路 计算机视觉研究院 公众号ID|ComputerVisionGzq 学习群|扫码在主页获取加入方式 转自:https://blog.csdn.net/nihate/article/details/108798831 计算机视觉研究院专栏 作者:Edison_G 最近在微信公众号里看到…

mtcnn人脸检测算法介绍

0. 概述 MTCNN(Multi-task Cascaded Convolutional Networks,多任务卷积神经网络),是2016年由Kaipeng Zhang、Zhanpeng Zhang等提出的一种多任务人脸检测模型,该模型使用3个CNN级联算法结构,将人脸检测和人脸特征点提取同时完成。…

Matlab人脸检测算法详解

这是一个Matlab人脸检测算法详解 前言人脸检测结果算法详解源代码解析所调用函数解析bwlabel(BW,n)regionpropsrectangle 总结 前言 目前主流的人脸检测与人脸识别算法主要基于人工神经网络进行训练与检测,本文基于数字图像处理解析一个非人工神经网络的有趣人脸检…

人脸检测算法落地详解

人脸检测 Face Detection 目标:人脸检测的目的是找出一张图片中的所有人脸的位置信息 人脸检测是人脸其他应用的基础,只有获取到了是否有人脸和人脸的精确的位置信息,其它的应用才能继续开展,所以说人脸检测是一个基础且重要的一…

MATLAB人脸检测算法

MATLAB人脸检测算法 人脸检测是将人脸从复杂的背景图像中检测出来,它是实现人脸识别的基础和前提。 肤色重建 使用人脸肤色模板对灰度图像进行肤色重建,使其变成彩色图像,效果如下: 在函数function Rgray2rgb1(img1,img2)中&a…

人脸检测算法

https://handong1587.github.io/deep_learning/2015/10/09/object-detection.html 人脸识别各论文参考 知乎一个栏目: https://zhuanlan.zhihu.com/p/25025596 首先介绍一下常用人脸检测的常用数据库: FDDB和WIDER FACE FDDB总共2845张图像&#xff0…

一文带你了解人脸检测算法的类型及其工作原理

在过去的几年里,人脸识别受到了广泛的关注,被认为是图像分析领域最有前途的应用之一。人脸检测可以考虑人脸识别操作的很大一部分。根据其强度将计算资源集中在持有人脸的图像部分。图片中的人脸检测方法很复杂,因为人脸存在可变性&#xff0…

人脸识别之人脸检测算法

人脸识别的一般步骤:人脸检测->人脸对齐->人脸特征提取->(计算人脸的差值)三元组损失/中心损失->差值小于某一阈值则为同一个人,差值大于某一阈值则不是同一人。 本文将对每一个步骤的技术现状,进行分析&a…

Python网络爬虫与信息提取(17)—— 题库爬取与整理+下载答案

前言 上一节实现了题目的整理,没整理答案是不完整的,所以这一节加上答案的爬取。 上一节地址:Python网络爬虫与信息提取(16)—— 题库爬取与整理 效果 思路 爬答案有点难搞,像这种题库的答案都是要么要会员,要么要登陆账号才能看答案,这种就比较费劲了,解决方案有…

Python 网络爬虫及数据可视化

网络爬虫及数据可视化 1 项目背景1.1Python的优势1.2网络爬虫1.3数据可视化1.4Python环境介绍1.4.1简介1.4.2特点 1.5扩展库介绍1.5.1安装模块1.5.2主要模块介绍 2 需求分析2.1 网络爬虫需求2.2 数据可视化需求 3 总体设计3.1 网页分析3.2 数据可视化设计 4 方案实施4.1 网络爬…

python网络爬虫权威指南 百度云-Python网络爬虫权威指南 PDF 第2版

给大家带来的一篇关于Python爬虫相关的电子书资源,介绍了关于Python、网络爬虫方面的内容,本书是由人民邮电出版社出版,格式为PDF,资源大小5.54 MB,瑞安米切尔编写,目前豆瓣、亚马逊、当当、京东等电子书综…

【python】基础网络爬虫教程

1.爬虫目的 用通俗易懂的话来说,是对多种类型数据(如文字,图片,音频,视频等)进行批量式的采集与存储。 本文为个人一些学习心得,举例对网页进行信息爬取操作,使用python中基础的方法进行爬取,便于理解学习。2.爬虫准备 需要对python有一些基础,对字符串,列表,循环结构等有了解。…

python网络爬虫及数据可视化

广东某学校的期末python作业 一、设计内容及要求 设计内容:对中国大学专业排名网站中2021年,计算机科学与技术专业,进行数据爬取和数据可视化。 URL: https://www.shanghairanking.cn/rankings/bcmr/2021/080901 设计要求&am…

python网络爬虫的流程图_Python 网络爬虫程序架构及运行流程

1 前言 Python开发网络爬虫获取网页数据的基本流程为: 发起请求 通过URL向服务器发起request请求,请求可以包含额外的header信息。 获取响应内容 服务器正常响应,将会收到一个response,即为所请求的网页内容,或许包含HTML,Json字符串或者二进制的数据(视频、图片)…

python网络爬虫--网页登录

1、前言 主要用到python的selenium库,通过模仿浏览器行为定位登录所需的标签位置,实现网页登录功能.最后在码云(gitee)上测试自动登录功能. 2、selenium定位网页元素 关于selenium的使用前准备可以看到我之前的一篇…

python网络爬虫可以干什么,python网络爬虫有什么用

python爬虫能做什么 世界上80%的爬虫是基于Python开发的,学好爬虫技能,可为后续的大数据分析、挖掘、机器学习等提供重要的数据源。什么是爬虫? (推荐学习:Python视频教程)网络爬虫(又被称为网…

python网络爬虫技术课后答案_尔雅《Python网络爬虫技术(2020年秋季学期)》网课答案...

尔雅《Python网络爬虫技术(2020年秋季学期)》网课答案 法律的一般含义是() 答:法律是由国家创制并保证实施的行为规范 下列属于急症手术的是 答:肝破裂 脾气统摄血液的功能,实际上是()的固摄作用的体现 答:气 中国古代南北争战中&…

(一)python网络爬虫(理论+实战)——爬虫的初步认识

小白都能学会的python网络爬虫专栏: https://blog.csdn.net/c1007857613/category_12127982.html 序言 本人从事爬虫相关工作已8年以上,从一个小白到能够熟练使用爬虫,中间也走了些弯路,希望以自身的学习经历,让大家能…