Navigation

    CreatiCode Scratch Forum

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • CreatiCode

    AI手部识别

    二维积木
    1
    1
    317
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • C
      CreatiCode Teacher last edited by admin

      说明

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

      blocks.png

       
      这个积木将接受3个输入参数:

      • 输出表格:第一个输入让你可以选择一个表格,用于保存这个积木的输出。注意,当你把这个积木添加到代码编辑器时,将会自动创建一个新表格,如果需要,你可以更改表格的名称。请查阅下文,了解将写入到该表格的数据的有关信息。

      • 调试:如果该输入设为“是的”,那么手部轮廓将会像下图那样绘画在摄像头图像之上。注意,总共21个点将得到识别:手腕,然后5根手指每根4个点。这些点在左手将绘画为红点,右手为蓝点。

      • 显示图像:如果该输入设为“是的”,那么来自摄像头的图像将在舞台上显示为背景。 如果该输入设为“不”,那么将不会显示图像,这将让程序运行得更快。如果你的程序只需要使用输出表格中的数据,那么你可以选择不显示图像。

       
       

      输出表格

      当在摄像头图像中检测不到手部时,输出表格将为空。它包含以下7列。

      Screen Shot 2023-02-27 at 3.10.24 PM.png

      当检测到一只手时,将有47行数据填充到表格内。如果检测到2只手,另外47行数据将添加到下方,共有94行。

      对于每一只手,都有3种类型的数据,每一种类型均使用不同的列子集:

       
       

      手指姿势

      对于每一只手,前5行包含了每一只手指的曲度和方向。 对于大部分简单的用例,这5行包含了足够的信息。


       
      只有4列数据填充到了这5行:

      • 手:这一列将告诉你这是左手还是右手。
         
      • 部位:这一列将告诉你该行描述的是哪一根手指。
         
      • 曲度:这是手指弯曲的角度。它应该是一个介于0和180之间的数字。例如,对于食指,当它伸直时,曲度为180度。随着你的手指不断弯曲,该角度将减小至大约40度。


       

      • 方向:这是手指指向的方向。它使用和运动积木“面相…方向”相同的方向系统。例如,当手指指向上方时,方向约为0度。当手指指向右方时,方向约为90度。对于左边方向,则约为-90度。对于向下的方向,则约为180或-180度。当然,实际的方向值不一定精确,因为你的程序需要检查该值是否位于一个范围之内。例如,如果方向大于-30或小于30,那么你可以把它看成是指向上方。

       
       

      舞台上的二维手指位置

      在手指姿势的5行数据下方,有21行的数据描述21个点的X位置和Y位置。填充数据的4列为:

      • 手:这一列将告诉你这是左手还是右手。
         
      • 部位:这一列告诉你这一行描述的是21个点中的哪一个。第一行是“手腕”点,然后5根手指中的每一根都有4行数据。例如,对于拇指,从下到上的4点为“拇指1”、“拇指2”、“拇指3”以及“拇指4”。

      • X和Y:这些数值使用和角色相同的位置系统,即舞台的中心为X = 0,Y = 0。例如,在下图中,手腕位于舞台底部的中央位置,因此其X位置约为0,其Y位置约为-180。

       
       

      舞台上的三维手指位置

      在21行的二维手指位置数据下方,有另外21行的数据描述同样的21个点的三维位置。填充数据的5列为:

      • 手:这一列将告诉你这是左手还是右手。
         
      • 部位:这一列告诉你这一行描述的是21个点中的哪一个。
         
      • X/Y/Z:这些数值使用三维位置系统。如果你用一个小盒子来表示每一个点,那么当你向前伸手时,这些盒子将形成面向前方(和你的真实手部相同的方向)的三维手部:

       
      你可以打开以下链接,尝试运行演示项目:

      https://play.creaticode.com/projects/ef0d19a26944613ac1805db7

      1 Reply Last reply Reply Quote 0
      • Moved from Draft by  C creaticodeteacher1-mail 
      • First post
        Last post