基于python的人脸检测
程序员文章站
2023-01-30 15:06:20
文章简要本文简单介绍使用opencv跨平台计算机视觉和机器学习软件库来进行人脸检测,操作工具:pycharm和opencv资源包。人脸检测代码下面展示 人脸检测代码,首先,这里果粒叔饰演的纪晓岚的剧照作为检测对象。import cv2 as cvdef face_text(img): # 灰度处理 gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY) # 加载特征(需要opencv的资源包) facec = cv.CascadeCl...
文章简要
本文简单介绍使用opencv跨平台计算机视觉和机器学习软件库来进行人脸检测,操作工具:pycharm和opencv资源包。
人脸检测代码
下面展示 人脸检测代码
,首先,这里果粒叔饰演的纪晓岚的剧照作为检测对象。
import cv2 as cv
def face_text(img):
# 灰度处理
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
# 加载特征(需要opencv的资源包)
facec = cv.CascadeClassifier("F:/tools/opencv/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml")
# 检测人脸,放入图片,返回人脸区域
faces = facec.detectMultiScale(gray)
for x, y, w, h in faces:
cv.rectangle(img, (x, y), (x + w, y + h), color=(0, 255, 0), thickness=2)
# 显示
cv.imshow("result", img)#注意:这里的两个参数都不能省略,尤其是第一个--输出标题
# 加载图片
a = cv.imread("D:\pycharm\local img\jixiaol.jpg")
b = cv.resize(a, dsize=(500, 300))
#调用检测函数
face_text(b)
cv.waitKey(0)#等待处理,按任意键继续,“0”为时长无限
cv.destroyAllWindows()#释放内存
下面,就可以尝试检测视频中的人脸,代码如下:
import cv2 as cv
def face_text(img):
# 灰度处理
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
# 加载特征
facec = cv.CascadeClassifier("F:/tools/opencv/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml")
# 检测人脸,放入图片,返回人脸区域
faces = facec.detectMultiScale(gray,minNeighbors=3)
for x, y, w, h in faces:
cv.rectangle(img, (x, y), (x + w, y + h), color=(0, 255, 0), thickness=2)
# 显示
cv.imshow("result", img)
cap = cv.VideoCapture(0,cv.CAP_DSHOW)#调用自己摄像头,注意,这里会因为python不同版本参数表达意会有差别,有的版本直接传入参数0即可
#cap = cv.VideoCapture(“___”)调用视频
#利用循环对每一帧进行检测,并使其检测到输入“q“后停止检测
while True:
flag, frame = cap.read()
face_text(frame)
cv.imshow("result", frame)
if ord("q") == cv.waitKey(10):
break
#释放内存
cv.destroyAllWindows()
cap.release()
对摄像头进行镜像处理
while True:
flag, frame = cap.read()
face_text(frame)
frame2 = cv.flip(frame,1)#镜像处理
cv.imshow("result", frame2)
if ord("q") == cv.waitKey(10):
break
当然,如果画质不清晰或者光线较暗,机器检测就会有偏差。
本文地址:https://blog.csdn.net/decent2/article/details/107022763