使用 OpenCV 分类器检测人脸之后,一张图片中可能包含多个人脸,所以对每一个识别到的人脸都绘制对应的矩形框。 进一步,我们在识别人脸的基础上,使用官方提供的path-of-haarcascade_eye.xml人眼检测模型,识别出人眼并绘制到图片上。 绿色框区域为眼睛,可以看出有识别错误的地方。 所以,一般情况下,我们会先检测出人脸区域,然后在人脸区域中使用眼睛区域检测模型得到眼睛区域,进而绘制。
【 1. 绘制矩形 】
图片坐标以左上角为原点;
(x,y)代表人脸区域左上角坐标;
w代表人脸区域的宽度(width);
h代表人脸区域的高度(height)。
#img 为目标图片 #左上角坐标为(x,y),右下角坐标为(x+w,y+h), #颜色(B,G,R),(255,0,0) 表示蓝色,(0,255,0) 表示绿色,(0,0,255) 表示红色,3 表示 BGR 三个通道。 # 2代表边框线粗度为 2。 cv2.rectangle(img,(x,y),(x+w,y+h),(0,0,255),2)
【 2. 绘制图片中人脸区域 】
import cv2 image = cv2.imread('picture.jpg')# 读取图片 gray = cv2.cvtColor(image,cv2.COLOR_RGB2GRAY)# 转换为灰度图片 #cv2.CascadeClassifier()为加载模型方法 face = cv2.CascadeClassifier(r'G:Python32Libsite-packagescv2datahaarcascade_frontalface_default.xml')# 人脸检测器 # face_cascade.detectMultiScale() 为人脸检测方法, gray 为待检测灰度图, 1.1 表示检测框按 1.1 的比例放大, 3 表示一个目标至少要被检测到 3 次才算真正的目标。 faces = face.detectMultiScale(gray,1.1,3) # 识别人脸 for (x,y,w,h) in faces : # 标记人脸 cv2.rectangle(image,(x,y),(x+w,y+h),(0,255,0),2) #绘制矩形 #上两句也可换成 #x, y, w, h = faces[0] #cv2.rectangle(img,(x,y),(x+w,y+h),(0,0,255),2) cv2.imshow('cute boy',image) # 显示图片 cv2.waitKey(0) # 等待用户关闭图片窗口 cv2.destroyAllWindows()# 关闭窗口
【 3. 绘制人脸区域中眼睛区域 】
如果单独使用OpenCV人眼检测模型,来识别出整个图片中的人眼区域,效果不是很好。import cv2 image = cv2.imread('picture.jpg')# 读取图片 gray = cv2.cvtColor(image,cv2.COLOR_RGB2GRAY)# 转换为灰度图片 face = cv2.CascadeClassifier(r'G:Python32Libsite-packagescv2datahaarcascade_frontalface_default.xml')# 人脸检测器 faces = face.detectMultiScale(gray,1.1,3) # 识别人脸 for (x,y,w,h) in faces : # 绘制人脸区域 cv2.rectangle(image,(x,y),(x+w,y+h),(0,0,255),2) #绘制人脸矩形框 eye_cascade = cv2.CascadeClassifier(r'G:Python32Libsite-packagescv2datahaarcascade_eye.xml')#人眼检测器 eyes = eye_cascade.detectMultiScale(gray) #识别人眼 for (ex, ey, ew, eh) in eyes: #绘制人眼 cv2.rectangle(image, (ex, ey), (ex + ew, ey + eh), (0, 255, 0), 2) # 绘制人眼矩形框 cv2.imshow('img',image) # 显示图片 cv2.waitKey(0) # 等待用户关闭图片窗口 cv2.destroyAllWindows()# 关闭窗口
import cv2 image = cv2.imread('picture.jpg')# 读取图片 gray = cv2.cvtColor(image,cv2.COLOR_RGB2GRAY)# 转换为灰度图片 face = cv2.CascadeClassifier(r'G:Python32Libsite-packagescv2datahaarcascade_frontalface_default.xml')# 人脸检测器 faces = face.detectMultiScale(gray,1.1,3) # 识别人脸 for (x,y,w,h) in faces : # 绘制人脸区域 cv2.rectangle(image,(x,y),(x+w,y+h),(0,0,255),2) #绘制人脸矩形框 face_gray = gray[y:y + h, x:x + w] # 灰度图片的脸部区域 face_area = image[y:y + h, x:x + w] # 原图像的脸部区域 eye_cascade = cv2.CascadeClassifier(r'G:Python32Libsite-packagescv2datahaarcascade_eye.xml')#人眼检测器 eyes = eye_cascade.detectMultiScale(face_gray) #识别人眼 for (ex, ey, ew, eh) in eyes: #绘制人眼 cv2.rectangle(face_area, (ex, ey), (ex + ew, ey + eh), (0, 255, 0), 2) # 绘制人眼矩形框 cv2.imshow('img',image) # 显示图片 cv2.waitKey(0) # 等待用户关闭图片窗口 cv2.destroyAllWindows()# 关闭窗口
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算