-
说明
你可以使用以下AI积木自动地通过电脑的前置摄像头识别用户的手部:

这个积木将接受3个输入参数:-
输出表格:第一个输入让你可以选择一个表格,用于保存这个积木的输出。注意,当你把这个积木添加到代码编辑器时,将会自动创建一个新表格,如果需要,你可以更改表格的名称。请查阅下文,了解将写入到该表格的数据的有关信息。
-
调试:如果该输入设为“是的”,那么手部轮廓将会像下图那样绘画在摄像头图像之上。注意,总共21个点将得到识别:手腕,然后5根手指每根4个点。这些点在左手将绘画为红点,右手为蓝点。
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/5fa9316b-98a9-4002-8081-72a9e52f1416.png" width="600" style="margin-left: 40px; border-radius: 5px; border: 1px solid #29622d;">
- 显示图像:如果该输入设为“是的”,那么来自摄像头的图像将在舞台上显示为背景。 如果该输入设为“不”,那么将不会显示图像,这将让程序运行得更快。如果你的程序只需要使用输出表格中的数据,那么你可以选择不显示图像。
输出表格
当在摄像头图像中检测不到手部时,输出表格将为空。它包含以下7列。

当检测到一只手时,将有47行数据填充到表格内。如果检测到2只手,另外47行数据将添加到下方,共有94行。
对于每一只手,都有3种类型的数据,每一种类型均使用不同的列子集:
手指姿势
对于每一只手,前5行包含了每一只手指的曲度和方向。 对于大部分简单的用例,这5行包含了足够的信息。
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/fe7c03b0-f69d-4f2c-9ad1-2c8b3d902953.png" width="800" style="border-radius: 5px; border: 1px solid #29622d;">
只有4列数据填充到了这5行:- 手:这一列将告诉你这是左手还是右手。
- 部位:这一列将告诉你该行描述的是哪一根手指。
- 曲度:这是手指弯曲的角度。它应该是一个介于0和180之间的数字。例如,对于食指,当它伸直时,曲度为180度。随着你的手指不断弯曲,该角度将减小至大约40度。
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/9a0e283a-a4de-42c2-8cfd-25faf3d40a66.gif" width="480" style="margin-left: 40px; border-radius: 5px; border: 1px solid #29622d;">
- 方向:这是手指指向的方向。它使用和运动积木“面相…方向”相同的方向系统。例如,当手指指向上方时,方向约为0度。当手指指向右方时,方向约为90度。对于左边方向,则约为-90度。对于向下的方向,则约为180或-180度。当然,实际的方向值不一定精确,因为你的程序需要检查该值是否位于一个范围之内。例如,如果方向大于-30或小于30,那么你可以把它看成是指向上方。
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/89fd5162-a072-4039-975f-fdec46ebb8b0.gif" width="480" style="margin-left: 40px; border-radius: 5px; border: 1px solid #29622d;">
舞台上的二维手指位置
在手指姿势的5行数据下方,有21行的数据描述21个点的X位置和Y位置。填充数据的4列为:
- 手:这一列将告诉你这是左手还是右手。
- 部位:这一列告诉你这一行描述的是21个点中的哪一个。第一行是“手腕”点,然后5根手指中的每一根都有4行数据。例如,对于拇指,从下到上的4点为“拇指1”、“拇指2”、“拇指3”以及“拇指4”。
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/a9223d6c-db55-484f-907f-7b5e82f1e258.PNG" width="700" style="margin-left: 40px; border-radius: 5px; border: 1px solid #29622d;">
- X和Y:这些数值使用和角色相同的位置系统,即舞台的中心为X = 0,Y = 0。例如,在下图中,手腕位于舞台底部的中央位置,因此其X位置约为0,其Y位置约为-180。
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/345999ba-e8f9-4000-96b3-431414dfd6a1.PNG" width="480" style="margin-left: 40px; border-radius: 5px; border: 1px solid #29622d;">
舞台上的三维手指位置
在21行的二维手指位置数据下方,有另外21行的数据描述同样的21个点的三维位置。填充数据的5列为:
- 手:这一列将告诉你这是左手还是右手。
- 部位:这一列告诉你这一行描述的是21个点中的哪一个。
- X/Y/Z:这些数值使用三维位置系统。如果你用一个小盒子来表示每一个点,那么当你向前伸手时,这些盒子将形成面向前方(和你的真实手部相同的方向)的三维手部:
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/cd26fa21-80c0-49a0-9f0c-ed05dae4d5c6.gif" width="480" style="margin-left: 40px; border-radius: 5px; border: 1px solid #29622d;">
你可以打开以下链接,尝试运行演示项目:https://play.creaticode.com/projects/ef0d19a26944613ac1805db7
-
-
C CreatiCode Teacher moved this topic from Draft on
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login