人工智能的乐趣:使用 MediaPipe 和 OpenCV 在屏幕上“神奇地”创建图形

本文介绍了如何利用MediaPipe的手部追踪功能和OpenCV库,根据食指间的距离在屏幕上动态创建圆形和矩形。当双手食指接近时,圆圈会融合成矩形。详细步骤、所需库的安装以及完整代码可在GitHub上找到。配合演示视频,为读者展示了一种结合人工智能技术的创意编程实践。
摘要由CSDN通过智能技术生成

1ded40dc4618be011b69cc92cfb851a3.png

作为一名软件工程师,大多数时候觉得,我们是真正的魔术师,通过将来自不同来源的不同代码片段拼接在一起,使应用程序能够工作。

那时,我们可以浏览 Paul McWhorter 关于“MediaPipe”的视频教程。在人工智能方面,他是最好的老师之一。

对于那些不认识Paul 的人,这里是他频道的链接:https://www.youtube.com/c/mcwhorpj

媒体管道

MediaPipe 为直播和流媒体 (https://mediapipe.dev/) 提供开源跨平台、可定制的 ML 解决方案。

在上述视频中,他演示了如何使用“MediaPipe Hands”跟踪手部和手指的运动。它使用机器学习 (ML) 从单帧中推断出一只手的 21 个 3D 地标。

6fbf4108d05af1436e0b8e56283b2fea.png

手地标(来源:https://google.github.io/mediapipe/solutions/hands.html)

想法

扩展这项工作,让圆形和矩形“神奇地”出现在屏幕上。准确地说,当双手出现在相机前时,食指尖周围会出现圆圈。把手拉近,圆圈互相接触,然后BINGO!合并成为一个圆圈。如果我们继续将手拉得更近,圆圈将变为矩形。

如果你觉得有趣,请继续阅读!

步骤

根据食指尖之间的距离绘制图形。

步骤是:

  1. 使用 MediaPipe 找到双手和所有手指。

  2. 获取双手食指尖(地标 8)的 x & y 坐标。

  3. 计算这两个指尖之间的欧几里得距离。

  • 如果距离大于预设半径(r)的两倍,则以指尖为圆心,半径为r画圆。

  • 如果距离在半径的两倍和要出现的矩形的预设值之间,绘制一个包围食指尖的圆圈。

  • 如果距离小于矩形点,则以食指尖为对角线绘制一个矩形。

  1. 使用 OpenCV 绘制这些图形。

编码

该程序的主要库是 MediaPipe、OpenCV 和 NumPy。使用命令pip install安装那些库。强烈建议使用虚拟环境。

完整的代码可以在这个 GitHub 页面上找到:

https://github.com/jazir/MediaPiPe-Magic-Figures

"""
A fun project to make circles & rectangle 'magically' appear on the screen
Platform: Windows 10
Python Version: 3.10+
Major libraries: MediaPipe, OpenCV, NumPy
"""

import cv2
import numpy as np
import math

# Camera settings
DEFAULT_CAM = 0 # Built-in camera
USB_CAM = 1 # External camera connected via USB port

CAM_SELECTED = DEFAULT_CAM
CAM_WI
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值