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


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


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


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


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



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


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


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


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


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



/ 01 / 图片检测


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



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


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


代码如下。


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.35)
    # 绘制人脸矩形框
    for (x, y, w, h) in faces:
        img = cv2.rectangle(img, (x, y), (x+w, y+h), (25500), 2)
    # 命名显示窗口
    cv2.namedWindow('people')
    # 显示图片
    cv2.imshow('people', img)
    # 保存图片
    cv2.imwrite('cxks.png', img)
    # 设置显示时间,0表示一直显示
    cv2.waitKey(0)


detect(filename)


最终结果如下。



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



/ 02 / 视频检测


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


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


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


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


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


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.35)
        # 绘制矩形框
        for (x, y, w, h) in faces:
            img = cv2.rectangle(img, (x, y), (x+w, y+h), (25500), 2)
        # 设置显示窗口
        cv2.namedWindow('camera'0)
        cv2.resizeWindow('camera'840480)
        # 显示处理后的视频
        cv2.imshow('camera', img)
        # 读取数据
        success, frame = cameraCapture.read()
    # 释放视频
    cameraCapture.release()
    # 释放所有窗口
    cv2.destroyAllWindows()


if __name__ == '__main__':
    face_rec()


最终视频结果如下。


https://v.qq.com/x/page/r087969or1q.html


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



/ 03 / 总结


相关数据已上传网盘,公众号回复「人脸检测」即可获取。


人脸检测的下一步就是人脸识别,难度也比较高。


需要给图像打标签,生成人脸识别数据。


然后通过OpenCV的Eigenfaces算法进行人脸识别。


万水千山总是情,点个「在看」行不行。





···  END  ···



©著作权归作者所有:来自51CTO博客作者mb5fe18ec4a4df8的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 5个原因告诉你:为什么在成为数据科学家之前,“逻辑回归”是第一个
  2. 金州勇士4年3冠的成功秘诀!数据可视化分析告诉你答案
  3. 数据科学大佬的简历上都有哪些技能?
  4. 你知道Jupyter notebook还可以用来做 “视频聊天室” 吗?
  5. 为什么你不应该成为一个“数据科学“通才?
  6. Python数据科学:神经网络
  7. 用数据分析大家最喜欢什么类型的抖音视频。
  8. 【知识星球】:Python数据科学学习社区
  9. JavaScript加密逻辑分析与Python模拟执行实现数据爬取

随机推荐

  1. Android中dpi 和density到底是什么关系?
  2. Android自助餐之notification
  3. 59. Android 静态分析插件
  4. android 短信验证自动获取验证码
  5. Expecting android:screenOrientation="u
  6. [置顶] android 设置边框圆角
  7. android初识之路
  8. android中连接到指定wifi
  9. Android SystemUI任务栏修改
  10. Android外置存储器(SD卡)工具类