前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OpenCV:人脸检测。

OpenCV:人脸检测。

作者头像
小F
发布2020-10-09 15:35:20
1.7K0
发布2020-10-09 15:35:20
举报

前段时间断更了好久,一部分原因就是学习OpenCV去了。

OpenCV是一个开源、跨平台的计算机视觉库,可以用于各种图像和视频处理操作。

比如最近写的一篇文章里就发现了计算机视觉的内容。

但基于什么小F就不得而知,毕竟弱鸡...

破冰行动的场景分类以及具体片段。

可以看到都是医疗场景的片段。

所以接下来会分享一些关于OpenCV有趣的小案例,毕竟要让学习变得有趣。

本次就来了解一下,如何通过OpenCV对人脸进行检测。

其中OpenCV有C++和Python两种,这里当然选用Python啦。

环境什么的,就靠大伙自己去百度了。

/ 01 / 图片检测

先来看一下图片检测,原图如下。

是谁我就不说了。律师函,不存在的。

训练数据是现成的,利用现成的数据,通过训练进而来检测人脸。

代码如下。

代码语言:javascript
复制
import cv2

# 图片名
filename = 'cxk.png'


def detect(filename):
    # cv2级联分类器CascadeClassifier,xml文件为训练数据
    face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
    # 读取图片
    img = cv2.imread(filename)
    # 转灰度图
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # 进行人脸检测
    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('people')
    # 显示图片
    cv2.imshow('people', img)
    # 保存图片
    cv2.imwrite('cxks.png', img)
    # 设置显示时间,0表示一直显示
    cv2.waitKey(0)


detect(filename)

最终结果如下。

图片好了,那么接下来就来看视频。

/ 02 / 视频检测

视频用的抖音的上的视频。

这里只截取检测效果比较好的视频段作为例子。

毕竟训练数据的质量摆在那里,有的时候会出现一些错误。

如想提高检测的精度,便需要一个高质量的人脸数据库。

由于资源有限,我就直接偷懒了。

代码语言:javascript
复制
import cv2


def face_rec():
    # 加载视频
    cameraCapture = cv2.VideoCapture('video.mp4')
    # cv2级联分类器CascadeClassifier,xml文件为训练数据
    face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
    # 读取数据
    success, frame = cameraCapture.read()
    while success and cv2.waitKey(1) == -1:
        # 读取数据
        ret, img = cameraCapture.read()
        # 进行人脸检测
        faces = face_cascade.detectMultiScale(img, 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('camera', 0)
        cv2.resizeWindow('camera', 840, 480)
        # 显示处理后的视频
        cv2.imshow('camera', img)
        # 读取数据
        success, frame = cameraCapture.read()
    # 释放视频
    cameraCapture.release()
    # 释放所有窗口
    cv2.destroyAllWindows()


if __name__ == '__main__':
    face_rec()

最终视频结果如下。

视频内容

小姐姐的脸全被圈起来了!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 法纳斯特 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档