Python OpenCV 人脸定位 ,包括(face,smile,eyes)

基于Python OpenCV的人脸定位(face ,smile,eyes)

import cv2 as cv

fd = cv.CascadeClassifier('face.xml')#脸部定位器
ed = cv.CascadeClassifier('eye.xml')#眼睛定位器
sd = cv.CascadeClassifier('smile.xml')#笑容定位器
vc = cv.VideoCapture(0) #视频捕捉,设备ID为从0开始的整数,0,是第一个,1是第二个,也可同时打开多摄像头
while True:
    frame = vc.read()[1] #获得一个图片帧
    # detectMultiScale级联分类器,人脸轮廓集合,1.3图片大小(厘米)下限,5,最多获取图片数量
    faces = fd.detectMultiScale(frame, 1.3, 5)  # 获得每张矩形框脸的元组(左顶宽高四个点),形成元组列表返回。

    for l, t, w, h in faces:
        a, b = int(w / 2), int(h / 2)  # 用于在大图中绘制脸部的椭圆框
        cv.ellipse(frame, (l + a, t + b), (a, b), 0, 0, 360, (255, 0, 255), 2)
        face = frame[t:t + h, l:l + w]  # 将脸部取出
        eyes = ed.detectMultiScale(face, 1.3, 5)  # 在脸中定位眼睛,返回眼睛的外切矩形
        for l, t, w, h in eyes:
            a, b = int(w / 2), int(h / 2) # 用于在脸的图片上绘制眼睛的椭圆框
            cv.ellipse(face, (l + a, t + b), (a, b), 0, 0, 360, (0, 255, 0), 2)
        smile = sd.detectMultiScale(face, 1.3, 5)  # 在脸中定位笑容,返回鼻子的外切矩形
        for l, t, w, h in smile:
            a, b = int(w / 2), int(h / 2)# 用于在脸的图片上绘制笑容的椭圆框
            cv.ellipse(face, (l + a, t + b), (a, b), 0, 0, 360, (255, 0, 0), 1)


    cv.imshow('VideoCapture',frame)
    if cv.waitKey(66) == 27: #27:是esc键。33表示等待33毫秒,相当于每秒连续显示33张图片
        break
vc.release()#一般摄像头是独占式,用完需释放
cv.destroyAllWindows()#释放隐藏窗口

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中使用OpenCV进行人脸检测的方法可以按照以下步骤进行操作。首先,导入所需的库和模型。可以使用以下代码导入OpenCV库和人脸检测模型: import cv2 cascade = cv2.CascadeClassifier("path/to/haarcascade_frontalface_default.xml") 在代码中,将"path/to/haarcascade_frontalface_default.xml"替换为你自己安装的OpenCV人脸检测模型的路径。 接下来,读取视频流或图像并将其转换为灰度图像以方便处理。可以使用以下代码完成此步骤: video_capture = cv2.VideoCapture(0) # 如果要从网络摄像头读取视频流,将0更改为视频流的URL while True: ret, frame = video_capture.read() gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 然后,使用模型进行人脸检测并标记出检测到的人脸。可以使用以下代码完成此步骤: faces = cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30)) for (x, y, w, h) in faces: cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2) 最后,显示标记后的图像并等待用户按下"q"键退出程序。可以使用以下代码完成此步骤: cv2.imshow('Video', frame) if cv2.waitKey(1) & 0xFF == ord('q'): break 完成以上步骤后,释放视频捕获对象并销毁所有窗口。可以使用以下代码完成此步骤: video_capture.release() cv2.destroyAllWindows() 以上是使用PythonOpenCV进行人脸检测的基本步骤。可以根据需要进行调整和扩展,例如添加眼睛和嘴巴的检测功能,或使用Dlib库进行更高级的人脸相关任务。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [python opencv人脸检测提取及保存方法](https://download.csdn.net/download/weixin_38552305/13769902)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [使用OpenCV实现人脸检测(Python)](https://blog.csdn.net/weixin_42990464/article/details/120171635)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值