在浏览器中实现多步骤计算机视觉工作流

在本指南中,将探讨如何利用传统的计算机视觉技术,在切换标签页或浏览器时自动模糊屏幕。这对于直播主播来说非常有用,可以在切换标签页时模糊屏幕,减少意外打开带有敏感信息的标签页的风险。

以下是将遵循的步骤:

  1. 创建一个计算区域主导颜色的工作流。
  2. 设置OBS(Open Broadcaster Software)。
  3. 安装并导入库。
  4. 定义所需的变量。
  5. 创建一个在主导颜色变化时运行的模糊函数,这表明标签页已更改。
  6. 在计算机上使用OBS运行工作流。

让开始构建!

创建工作流

最终工作流将类似于此:

  1. 首先,在Roboflow账户中创建一个新的工作流。
  2. 接下来,选择自定义工作流选项。
  3. 然后,选择绝对静态裁剪。这个块允许将工作流集中在图像的特定部分。
  4. 接下来,插入要检测的x、y以及宽度和高度的值。这应该是想要模糊的屏幕区域。
  5. 对于情况,使用了这些值:
# 这些值应根据屏幕区域进行调整 x = 100 y = 200 width = 300 height = 400

要获取这些值,建议使用计算机上的截图工具来确定想要应用此工具的区域的x、y、宽度和高度位置。

接下来,添加一个主导颜色块。可以通过在工作流搜索栏中搜索来找到它。确保主导颜色块接受静态裁剪块作为输入。最后,保存代码块并保存部署代码。

设置OBS

为了录制屏幕,将需要一个虚拟相机提供商。在情况下,使用了OBS来捕获屏幕。可以通过在OBS中选择启动虚拟相机类别来设置虚拟相机。

现在已经设置了虚拟相机,可以开始编码了。

安装并导入库

在开始编码之前,让安装所需的库。

!pip install opencv-python inference

将库导入到新的Python脚本中:

import cv2 from inference import InferencePipeline from inference.core.interfaces.camera.entities import VideoFrame

定义所需变量

现在需要定义必要的变量。将使用prev_color来理解前一个颜色是什么。使用blur_frame_count来计算在过程中需要模糊多少帧。

prev_color = (255, 255, 255) blur_frame_count = 0

创建模糊函数

接下来,为了模糊屏幕,将使用cv2库中的GaussianBlur函数。感兴趣区域(roi变量)将是整个图像。在函数中,对于每个模糊的帧,减去1的模糊帧计数。

def blur_screen(): roi = img blurred_roi = cv2.GaussianBlur(roi, (15, 15), 0) img = blurred_roi print("已应用模糊到帧。") blur_frame_count -= 1

创建预测函数

在这一步中,将创建一个函数,该函数将查看显示的每个帧,并根据当前颜色和前一个颜色来模糊接下来的几帧。这个函数将利用模型的输出来确定每个标签的颜色。

def on_prediction(res: dict, frame: VideoFrame) -> None: global prev_color, blur_frame_count img = frame.image color = res["dominant_color"] if color[0] > (prev_color[0] + 10): blur_frame_count = 3 print("标签已更改,开始模糊...") if blur_frame_count > 0: blur_screen() prev_color = res["dominant_color"] cv2.imshow("屏幕模糊", img) if cv2.waitKey(1) & 0xFF == ord("q"): return

首先,将prev_color和blur_frame_count变量设置为全局变量,以便在函数中访问它们。然后,设置图像。接下来,使用工作流,可以获取标签的主导颜色。如果颜色差异超过10,那么知道标签已切换。如果发生这种情况,将blur_frame_count设置为3,并调用blur_screen函数3次。最后,定义屏幕的前一个颜色,并显示图像,无论是模糊的还是未模糊的。

导入工作流代码

最后,可以添加工作流代码以将工作流与预测函数连接起来。

pipeline = InferencePipeline.init_with_workflow( video_reference=1, workspace_name="nathan-yan", workflow_id="WORKFLOW-ID", max_fps=60, api_key="API_KEY", on_prediction=on_prediction, ) # 确保通过运行以下代码启动管道 pipeline.start()

在本指南中,学习了如何模糊标签更改以保护用户隐私和防止信息泄露。还学习了如何创建工作流以利用传统的计算机视觉技术。有关更多使用工作流的教程和指南,请查看一些博客。

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