Skip to main content

自动识别图片中人脸并加上马赛克

Project description

facemosaic

  • 模块介绍
  • 安装方法
  • 使用方法
  • 使用实例
  • 相关网址

模块介绍

该模块可以在脱机状态下识别人脸并加上马赛克。
该模块目前采用的深度学习框架为'caffe'。
该模块需要依赖opencv-python。
暂不支持cuda加速。


安装方法

在cmd窗口下输入:

pip install facemosaic

使用方法

函数:
add_mosaic

该函数用于识别图片中的人脸并加上马赛克
必要参数:img 可选参数:pixel_width conf_threshold
对于可选参数的说明请见下文 返回:
会返回修改后的图像,使用cv2的imwrite函数即可保存图像

get_face

识别图片中的人脸位置 必要参数:img 可选参数:conf_threshold
img -> 通过cv2中imread函数返回的值flags使用默认参数
conf_threshold -> 要求参数为不大于1不小于0的浮点数。该参数可规定识别的人脸形态阈值(建议不小于0.6)
返回:
会返回一个列表 -> [[人脸左下角横坐标, 人脸左下角纵坐标, 人脸宽度, 人脸高度], ...](原点位于图片左下角)

mosaic

该函数用于为图片加上马赛克
必要参数:img facial_position 可选参数:pixel_width
img -> 通过cv2中imread函数返回的值flags使用默认参数 facial_position -> 需要get_face函数的返回值 pixel_width -> 关于定义像素化部分一个色块的宽度(单位为像素) 返回:
会返回修改后的图像,使用cv2的imwrite函数即可保存图像


使用实例

  1. 批量图像打码
import os  # 获取图片路径
import cv2  # 用于读写图片
import facemosaic  # 用于打码的模块
import time  # 用于计算代码运算时间

read_path = './images/'  # 原图片的文件夹
save_path = './save/'  #  打码后的图片文件夹

st = time.time()  # 开始时间
for file_names in os.walk(read_path):
    for file_name in file_names[2]:  # 获取图片文件名
        data = facemosaic.add_mosaic(cv2.imread(read_path+file_name))  # 获取加工后的图片
        cv2.imwrite(save_path+os.path.splitext(file_name)[0]+'.png', data)  # 保存图片
et = time.time()  # 结束时间
print(f'ok.it uses {et - st} s')  # 输出总用时
  1. 实时人脸打码
import cv2  # 读取摄像头内容,保存视频
import facemosaic  # 用于打码的模块

cap = cv2.VideoCapture(0)  # 打开摄像头
vw = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))  # 获取摄像头宽
vh = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))  # 获取摄像头高
fps = cap.get(cv2.CAP_PROP_FPS)  # 获取视频帧率(最好根据实际每秒加工的图像数量设置否则视频会被加速或减速)
video = cv2.VideoWriter('./save_cv.mp4', cv2.VideoWriter_fourcc('m', 'p', '4', 'v'), fps, (vw, vh))  # 将打码后的内容保存为视频
while True:
    ret, frame = cap.read()  # 读取图片
    data = facemosaic.add_mosaic(frame)  # 对图像进行加工
    cv2.imshow("video", data)  # 显示打码后的图像
    video.write(data)  # 写入数据
    if cv2.waitKey(1) & 0xFF == ord('q'):  # 按q退出
        break

cap.release()  # 释放资源  
cv2.destroyAllWindows()  # 关闭所有窗口
  1. 对视频中人脸打码
import facemosaic
import time
import cv2

st = time.time()  # 获取开始时间
cap = cv2.VideoCapture('./test_v.mp4')  # 打开原视频
vw = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))  # 获取原视频宽
vh = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))  # 获取原视频高
fps = cap.get(cv2.CAP_PROP_FPS)  # 获取原视频帧率
video = cv2.VideoWriter('./save_v.mp4', cv2.VideoWriter_fourcc('m', 'p', '4', 'v'), fps, (vw, vh))  # 保存加工后的视频

while True:
    ret, frame = cap.read()  # 读取一帧
    if not(ret):  # 当没有可以读取的数据后结束循环
        break
    video.write(facemosaic.add_mosaic(frame, pixel_width=25))  # 保存加工后的帧
    

cap.release()  # 释放资源
et = time.time()  # 结束时间

print(f'ok.it uses {et - st} s')  # 输出总运行时间

相关网址

帮助文档

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

facemosaic-1.1.0-py3-none-any.whl (5.1 MB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page