python应用:Python20行代码实现人脸识别

    作者:程序员的人生A更新于: 2020-02-24 13:14:12

    大神带你学编程,欢迎选课

    Python是一种解释型脚本语言,可以应用于以下领域:
    web 和 Internet开发
    科学计算和统计
    人工智能
    教育
    桌面界面开发
    软件开发
    后端开发
    网络爬虫

    OpenCV 是最流行的计算机视觉库,原本用 C 和 C++ 开发,现在也支持 Python。
    注意:很多人学Python过程中会遇到各种烦恼问题,没有人帮答疑。为此小编建了个Python全栈免费答疑交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,不懂的问题有老司机解决里面还有最新python教程项目可拿,,一起相互监督共同进步!

    它使用机器学习算法在图像中搜索人的面部。对于人脸这么复杂的东西,并没有一个简单的检测能对是否存在人脸下结论,而需要成千上万的特征匹配。算法把人脸识别任务分解成数千个小任务,每个都不难处理。这些任务也被称为分类器。

    对于类似于人脸的对象,你或许需要不少于 6000 个分类器,每一个都需要成功匹配(当然,有容错率),才能检测出人脸。但这有一个问题:对于人脸识别,算法从左上角开始计算一个个数据块,不停问“这是张脸吗”。每个数据块有超过 6000 个检测,加起来的计算量会达到数百万级别,计算机很可能会让你等得花儿都谢了。

    OpenCV 使用 cascades 来避免这种情况。Cascade 是什么?最佳答案已经在字典里了:一条瀑布或者连续瀑布。

    好比连续瀑布,OpenCV cascade 把人脸检测问题分解为好几步。对于每个数据块,它都进行一个粗略、快速的检测。若通过,会再进行一个更仔细的检测,以此不断类推。该算法有 30 到 50 个这样的阶段,或者说 cascade。

    只有通过全部阶段,算法才会判断检测到人脸。这样做的好处是:大多数图形都会在头几步就产生否定反馈,算法因而不需要在它上面测试所有 6000 个特征,大大节省了时间。相对于“正常流程”耗费数个小时,这可以实时实现人脸检测。

    软件环境:
    python3+openCV

    代码:

    #encoding:utf-8
    import cv2
    filename = "/users/Downloads/20181102142518.png"
    def detect(filename):
     # haarcascade_frontalface_default.XML存储在package安装的位置
    face_cascade = cv2.CascadeClassifier("/usr/local/lib/python3.6/site-packages/cv2/data/haarcascade_frontalface_default.xml")
     img = cv2.imread(filename)
     gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
     #传递参数是scaleFactor和minNeighbors,分别表示人脸检测过程中每次迭代时图像的压缩率以及每个人脸矩形保留近邻数目的最小值
     #检测结果返回人脸矩形数组
     
    faces = face_cascade.detectMultiScale(gray, 1.3, 5)
     for (x, y, w, h) in faces:
     img = cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
     cv2.namedWindow("Human Face Result!")
     cv2.imshow("Human Face Result!", img)
     cv2.imwrite("images/Face.jpg", img)
     cv2.waitKey(0)
     cv2.destroyAllWindows()
    detect(filename)
    

    原图:

    python应用:Python20行代码实现人脸识别_python_编程语言_Python语言_课课家
    识别后:
     
    以上就是使用Python的20行代码来实现人脸识别了~

    注意:很多人学Python过程中会遇到各种烦恼问题,没有人帮答疑。

    Python是一种跨平台的计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。

课课家教育

未登录