opencv算法+人脸检测

news/2024/9/21 18:30:39

文章目录

    • 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://www.pgtn.cn/news/17597.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Windows pytesseract image_to_osd Invalid resolution 0 dpi. Using 70 instead. Too few characters报错及解决

Windows pytesseract image_to_osd Invalid resolution 0 dpi. Using 70 instead. Too few characters报错及解决 1. 安装 python3.7 pip install pytesseract0.1.9 安装tesseract-ocr(配置path环境变量或者在代码中指定tesseract_cmd) 2.报错及解决…

全浏览器兼容的DIV拖动效果

测试过下列浏览器 IE6、IE7、IE8、Chrome 5、FF 3.6、Opera 10、Safari 5 拖动效果的脚本网上都有&#xff0c;但网上找到的脚本有个问题 这是在网上随便找的代码(原出处不知道&#xff0c;很多类似代码的文章都没写出处&#xff0c;实在不知道到底出至哪里...) 代码 1 <!DO…

数据结构--图论

文章目录邻接矩阵和邻接表DFSBFS判断图是否为树邻接矩阵和邻接表 DFS BFS 判断图是否为树 #include<stdio.h> #include<malloc.h> #include<bits/stdc.h> using namespace std; #define INF 32767 #define MAXV 100 typedef char InfoType; typedef stru…

visual-logging——使得Python,OpenCV调试应用程序的新工具

visual-logging——Python&#xff0c;OpenCV调试应用程序的新工具 这篇博客将介绍如何使用可视化日志记录&#xff08;visual-logging&#xff09;来帮助可视化应用程序执行的管道。使用cv2.imshow和cv2.waitKey语句堵塞代码的日子已经一去不复返了&#xff01;相反&#xff…

PowerShell 2.0 实践(十二)管理 SQL Server 2008 R2(1)

DBA可以使用的工具很多&#xff0c;对于SQL Server来说&#xff0c;有查询分析器、事件探查器、命令行工具等&#xff0c;其中SQL语句是重中之重&#xff0c;但是PowerShell的出现使得DBA又多了一种选择。 测试脚本下载 本系列所有测试脚本均在Windows Server 2008 R2 DataCent…

opencvmediapipe 人脸检测+摄像头实时

文章目录单张人脸关键点检测单张图像人脸检测摄像头实时关键点检测单张人脸关键点检测 定义可视化图像函数 导入三维人脸关键点检测模型 导入可视化函数和可视化样式 读取图像 将图像模型输入&#xff0c;获取预测结果 BGR转RGB 将RGB图像输入模型&#xff0c;获取预测结果 预…

opencv-mediapipe人脸检测-颜值打分+摄像头实时

文章目录颜值打分摄像头实时检测颜值打分达芬奇指标摄像头实时达芬奇颜值指标颜值打分 定义可视化图像函数 导入三维人脸关键点检测模型 导入可视化函数和可视化样式 将图像模型输入&#xff0c;获取预测结果 BGR转RGB 将RGB图像输入模型&#xff0c;获取预测结果 预测人人脸个…

使用Python,Tesseract更正文本方向

这篇博客将介绍如何使用 Tesseract 的方向和脚本检测 &#xff08;OSD&#xff09; 模式执行自动文本方向检测和更正。 orientation and script detection (OSD) 方向和脚本检测 text orientation 文本定向 OSD模式检测并提供了图像中文本的方向&#xff0c;估计的旋转校正角度…