能去码也能打码!OpenCV实时检测视频流人脸并马赛克之,视频后期福音
大数据文摘出品
我们现在经常用到的马赛克其实起源于建筑上的图案装饰,如今马赛克常用于图像或视频的模糊处理。随着技术的进步,打码与去码变成了一种常见的技术研究方向,同时也掀起了一场技术与道德的“战争”。
那么为什么要打马赛克?其实是处于一种隐私保护,例如新闻上出现犯罪嫌疑人的画面时是需要打码的,因为尚未定罪时需要维护嫌疑人的肖像权。
现如今,大部分打马赛克的工作都需要我们手动来打,比如在图像/视频制作软件里添加马赛克。那么这种工作能不能交给AI呢?如果AI可以自动对图像/视频进行实时处理,无疑会帮人类减轻很大的工作量。
答案是可以!Adrian Rosebrock博士在博客中分享了通过OpenCV实现“人脸自动马赛克”这一教程,而这个项目是受到了他的一位博客读者的启发。事实上,这个项目有很大的现实意义。
那么,AI究竟是如何做到自动实时打码的?说到这里,首先需要介绍一下什么是人脸模糊。
什么是人脸模糊?
Adrian Rosebrock博士在博客中详细的分享了技术实现方法,从介绍人脸检测器,人脸模糊的简单步骤,到分别用OpenCV对人脸进行高斯模糊和像素化模糊的详细操作。
Adrian Rosebrock博士的详细教程:
简单来说,实现人脸模糊可以分为以下4步:
第一步:人脸检测
在这一步可以使用任何的人脸检测器,只要它能在图像或视频中生成人脸的边界框坐标就行。
有一些常见的人脸检测工具可以供你参考:
-
Haar cascades -
HOG + Linear SVM -
Deep learning-based face detectors
第二步:图像/视频的ROI提取
-
人脸边界框的起始坐标x -
面部截止的坐标x -
人脸位置的起始坐标y -
面部截止的坐标y
第三步:人脸模糊
高斯模糊下的面部图像
第四步:将模糊后的照片整合到原始图像中
如何在实时视频中通过AI实现人脸自动模糊?
文摘菌在这里简单展示一下如何使用OpenCV识别人脸,然后再将人脸模糊应用到实时视频流中。
$ python blur_face_video.py --face face_detector --method simple
[ ] loading face detector model...
[ ] starting video stream...
高斯模糊实时视频流
$ python blur_face_video.py --face face_detector --method pixelated
[ ] loading face detector model...
[ ] starting video stream...
像素化模糊实时视频流
微软曾提出一种可在视频中通过AI实现人脸模糊的方法
https://www.pyimagesearch.com/2020/04/06/blur-and-anonymize-faces-with-opencv-and-python/
https://www.zhihu.com/question/21672713
实习/全职编辑记者招聘ing