• 从安装python到使用opencv进行人脸检测


    一、python与PyCharm的安装

    1.python主要有三种安装方式

    参考自:2、Python安装 - 哔哩哔哩

    Python安装教程(2022最新)_北京精神病康复中心的博客-CSDN博客

    python下载官网:Python Releases for Windows | Python.org

    1)在线安装:即执行安装后才透过网络下载python: Download Windows x86-64 web-based installer。

    2)exe程序安装: Download Windows x86-64 executable installer。推荐使用这种安装方式,可以不用配置环境变量,一路next就可以了。

    3)压缩文件解压缩安装: Download Windows x86-64 embeddable zip file。这种是直接下载整包的方式,下载下来后需要配置环境变量才能使用。

    2.PyCharm的安装

    安装完python我们需要下载编辑器,在这里推荐使用PyCharm

    PyCharm下载官网:Other Versions - PyCharm

    1)从官网下载exe文件

    注意选择的exe版本最好是比自己下载的Python发布晚一点的预防造成版本问题。并且我们选择community版本进行下载,这样后面可以不用收费。

    2)接下来也基本上是一路next就可以了。

    可参考:【Python(二)】PyCharm安装教程_和光同其尘的博客-CSDN博客_pycharm安装教程

    【Python(二)】PyCharm安装教程_和光同其尘的博客-CSDN博客_pycharm安装教程

    后面需要配置一下interpreter,要不然运行的时候可能会出现一些问题,我在interpreter选择的exe是python安装的目录上的exe。

    二、安装opencv

    1.打开exe输入pip指令

    pip install opencv-python

    2.安装后的opencv的位置

    一般是放在python文件夹下的Lib文件夹下的site-packages

    C:/Users/Administrator/AppData/Local/Programs/Python/Python311/Lib/site-packages/

    三、使用opencv检测图片和视频中的人脸

    1.原理:级联分类器

     2.Haar级联分类器

    1)可供检测的类型

     2)关键函数:detectMultiScale

     
    

     3.检测图片中的人脸和人眼的代码

    需要准备一张图片命名为pic.jpg放到main.py所在的文件夹下

    1. import cv2 as cv
    2. import matplotlib.pyplot as plt
    3. #读取图片
    4. img = cv.imread("pic.jpg")
    5. #设置灰度图
    6. gray=cv.cvtColor(img,cv.COLOR_RGB2GRAY)
    7. #加载识别人脸的分类器
    8. face_cas=cv.CascadeClassifier("C:/Users/Administrator/AppData/Local/Programs/Python/Python311/Lib/site-packages/cv2/data/haarcascade_frontalface_default.xml")
    9. #加载识别人眼的分类器
    10. eyes_cas=cv.CascadeClassifier("C:/Users/Administrator/AppData/Local/Programs/Python/Python311/Lib/site-packages/cv2/data/haarcascade_eye.xml")
    11. #调用detectMultiScale识别人脸
    12. faceRects=face_cas.detectMultiScale(gray,scaleFactor=1.15,minNeighbors=5,minSize=(5,5))
    13. for faceRect in faceRects:
    14. #读取人脸信息
    15. x,y,w,h=faceRect
    16. #将人脸框出来
    17. #cv.rectangle(img,(x,y),(x+h,y+w),(0,255,0),3)
    18. cv.circle(img, (int((x + x + w) / 2), int((y + y + h) / 2)), int(w / 2), (0, 255, 0), 2)
    19. #在识别出的人脸中继续识别人眼
    20. roi_color=img[y:y+h,x:x+w]
    21. roi_gary = gray[y:y + h, x:x + w]
    22. # 调用detectMultiScale识别人眼
    23. eyes=eyes_cas.detectMultiScale(roi_gary,scaleFactor=1.15,minNeighbors=5,minSize=(3,3))
    24. #将人眼框出来,人眼有两个
    25. for(ex,ey,ew,eh) in eyes:
    26. cv.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),1)
    27. plt.figure(figsize=(8,6),dpi=100)
    28. plt.imshow(img[:,:,::-1]),plt.title('result')
    29. plt.xticks([]),plt.yticks([])
    30. plt.show()

     4.检测视频中的人脸和代码

    需要准备一段视频命名为movie.mp4放到main.py所在的文件夹下

    1. import cv2 as cv
    2. import matplotlib.pyplot as plt
    3. # 1.读取视频
    4. cap = cv.VideoCapture("movie.mp4")
    5. # 2.在每一帧数据中进行人脸识别
    6. while(cap.isOpened()):
    7. ret, frame = cap.read()
    8. if frame is None:
    9. break
    10. small_frame=[]#视频播放完毕退出窗口
    11. try:
    12. #将视频中的帧的大小调小一点,降低运算
    13. small_frame = cv.resize(frame, (0, 0), fx=0.5, fy=0.5)
    14. except:
    15. continue
    16. if ret==True:
    17. #转灰度图
    18. gray = cv.cvtColor(small_frame, cv.COLOR_BGR2GRAY)
    19. # 3.实例化OpenCV人脸识别的分类器 haarcascade_frontalface_default haarcascade_frontalface_alt
    20. face_cas = cv.CascadeClassifier( "C:/Users/Administrator/AppData/Local/Programs/Python/Python311/Lib/site-packages/cv2/data/haarcascade_frontalface_alt.xml" )
    21. # 4.调用识别人脸
    22. faceRects = face_cas.detectMultiScale(gray,scaleFactor=1.15,minNeighbors=3,minSize=(3,3))
    23. for faceRect in faceRects:
    24. x, y, w, h = faceRect
    25. # 框出人脸
    26. cv.rectangle(small_frame, (x, y), (x + h, y + w),(0,255,0), 3)
    27. cv.imshow("frame",small_frame)
    28. if cv.waitKey(1) & 0xFF == ord('q'):
    29. break
    30. # 5. 释放资源
    31. cap.release()
    32. cv.destroyAllWindows()
  • 相关阅读:
    web前端网页设计作业—个人网页(游戏主题)(html+css+js)
    算法讨论题 —— Java实现两数之和
    gopacket reassembly源码分析
    LeetCode_二分搜索_中等_2594.修车的最少时间
    k8s 新版本 部署 Ingress-nginx controller
    「C#」WPF学习笔记-基础类及继承关系
    命令行版 Centos 7 虚拟机安装 xfce4 桌面 + x11vnc + novnc
    全相联映射、直接映射、组相连映射
    【图灵诸葛】jvm笔记
    java毕业设计“传情旧物”网站mybatis+源码+调试部署+系统+数据库+lw
  • 原文地址:https://blog.csdn.net/qq_42987967/article/details/127928587