图像与视频隐私保护技术

在数字时代,保护个人隐私变得尤为重要。无论是在图像还是视频中,人们都希望确保自己的隐私不被侵犯。为了实现这一目标,可以使用人脸检测API来识别图像或视频中的人,并使用Python的supervision库来模糊这些人所在的区域。这种方法只需几行代码即可实现。

本指南将详细介绍如何在图像和视频中模糊人像。将展示两种略有不同的方法:一种是用于图像的,另一种是用于视频的。对于图像,将使用Roboflow托管的API和supervision;而对于视频,将使用专为视频处理设计的Roboflow视频推理API和supervision。

以下是一个视频中人物被模糊的例子:

from roboflow import Roboflow import supervision as sv import cv2 rf = Roboflow(api_key="API_KEY") project = rf.workspace().project("people-detection-o4rdr") model = project.version(7).model results = model.predict("people.jpg", confidence=40, overlap=30).json() predictions = sv.Detections.from_inference(results) image = cv2.imread("people.jpg") # 过滤出class id == 0的预测,即“person”类别 people = predictions[predictions.class_id == 0] blur_annotator = sv.BlurAnnotator() annotated_frame = blur_annotator.annotate( scene=image.copy(), detections=people ) sv.plot_image(annotated_frame)

在上述代码中,将"API_KEY"替换为Roboflow API密钥。了解如何获取Roboflow API密钥。然后运行代码。正在处理的图像将出现在屏幕上,图像中的所有人像都将被模糊处理。

成功地在图像中模糊了人像。

视频模糊API

要在视频中模糊人像,可以使用托管的Roboflow视频推理API。这个API针对视频推理进行了优化。可以将视频发送到API,并指定想要使用预训练的人像检测模型。然后,可以为每一帧检索预测结果。可以使用这些预测结果来模糊视频中的人像。

import json import os from roboflow import Roboflow import numpy as np import supervision as sv import cv2 PROJECT_NAME = "people-detection-o4rdr" VIDEO_FILE = "people.mp4" rf = Roboflow(api_key="API_KEY") project = rf.workspace().project(PROJECT_NAME) model = project.version(7).model job_id, signed_url, expire_time = model.predict_video( VIDEO_FILE, fps=5, prediction_type="batch-video", ) results = model.poll_until_video_results(job_id) with open("results.json", "w") as f: json.dump(results, f) frame_offset = results["frame_offset"] model_results = results["people-detection-o4rdr"] def callback(scene: np.ndarray, index: int) -> np.ndarray: if index in frame_offset: detections = sv.Detections.from_inference(model_results[frame_offset.index(index)]) else: nearest = min(frame_offset, key=lambda x: abs(x - index)) detections = sv.Detections.from_inference( model_results[frame_offset.index(nearest)]) blur_annotator = sv.BlurAnnotator() annotated_image = blur_annotator.annotate( scene=scene, detections=detections) return annotated_image sv.process_video( source_path=VIDEO_FILE, target_path="output.mp4", callback=callback, )

在上述代码中,将"API_KEY"替换为Roboflow API密钥。了解如何获取Roboflow API密钥。建议将fps设置为5作为起点。这意味着每秒将运行五次推理。FPS越高,推理的成本就越高。

当运行上述代码时,视频将被发送进行处理。推理在视频上运行所需的时间取决于视频中的帧数。"poll_until_video_results"函数将每60秒轮询一次视频API,直到有结果可用。然后将该结果保存到文件中。

当处理开始时,将看到以下输出:

loading Roboflow workspace... loading Roboflow project... Checking for video inference results for job 15be7ab5-232a-4e02-aa47-864ff8a2581b every 60s

视频推理API返回每一帧中人物的像素坐标。然后使用supervision Python包来模糊人物所在的区域。

当上述脚本运行完成后,结果将被保存到名为“output.mp4”的文件中。以下是上述视频模糊代码的输出示例:

成功地在视频中模糊了人像。

当录制包含人物的视频,而人物与计算机视觉项目无关时,建议模糊人物所在的区域。模糊人物可以让保留画面中人物的隐私。

在本指南中,介绍了如何使用Roboflow图像和视频处理API以及supervision Python包来模糊图像和视频中的人物。使用了托管在Roboflow Universe上的人体检测模型来检测图像和视频中的人物,然后使用supervision来模糊人物所在的视觉媒体区域。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485