jinglixixi 发表于 2024-10-20 09:55

【K230嵌入式AI开发板测评】+手语简单识别篇(二)

<p>对于待识别的5个手指,它与色彩的对应关系如图10所示。</p>

<p> &nbsp;</p>

<p>图10 色彩对应关系</p>

<p >&nbsp;</p>

<p >以色彩标识手指的绘制程序为:</p>

<pre>
<code class="language-python">for i in range(5):
      j = i*8
      if i==0:
         R = 255; G = 0; B = 0
      if i==1:
         R = 255; G = 0; B = 255
      if i==2:
         R = 255; G = 255; B = 0
      if i==3:
         R = 0; G = 255; B = 0
      if i==4:
         R = 0; G = 0; B = 255
      pl.osd_img.draw_line(results_show, results_show, results_show, results_show, color=(255,R,G,B), thickness = 3)
      pl.osd_img.draw_line(results_show, results_show, results_show, results_show, color=(255,R,G,B), thickness = 3)
      pl.osd_img.draw_line(results_show, results_show, results_show, results_show, color=(255,R,G,B), thickness = 3)
      pl.osd_img.draw_line(results_show, results_show, results_show, results_show, color=(255,R,G,B), thickness = 3)

      gesture_str=gesture_res
      pl.osd_img.draw_string_advanced( x_det , y_det-50,32, " " + str(gesture_str), color=(255,0, 255, 0))</code></pre>

<p>&nbsp;</p>

<p>那么除了所测试的3种手势外,还能识别出哪些手势呢?</p>

<p >共有9种手势,即fist(拳头)、five(五)、gun(枪)、love(喜爱&nbsp;)、one(一)、six(六)、three(三)、thumbUp(翘拇指)、yeah(对)。</p>

<p >&nbsp;</p>

<p >定义和识别手势的程序为:</p>

<pre>
<code class="language-python"># 根据手掌关键点检测结果判断手势类别
def hk_gesture(self,results):
with ScopedTiming("hk_gesture",self.debug_mode &gt; 0):
angle_list = []
for i in range(5):
angle = self.hk_vector_2d_angle([(results-results), (results-results)],[(results-results),(results-results)])
angle_list.append(angle)
thr_angle,thr_angle_thumb,thr_angle_s,gesture_str = 65.,53.,49.,None
if 65535. not in angle_list:
if (angle_list&gt;thr_angle_thumb) and (angle_list&gt;thr_angle) and (angle_list&gt;thr_angle) and (angle_list&gt;thr_angle) and (angle_list&gt;thr_angle):
gesture_str = "fist"
elif (angle_list&lt;thr_angle_s) and (angle_list&lt;thr_angle_s) and (angle_list&lt;thr_angle_s) and (angle_list&lt;thr_angle_s) and (angle_list&lt;thr_angle_s):
gesture_str = "five"
elif (angle_list&lt;thr_angle_s) and (angle_list&lt;thr_angle_s) and (angle_list&gt;thr_angle) and (angle_list&gt;thr_angle) and (angle_list&gt;thr_angle):
gesture_str = "gun"
elif (angle_list&lt;thr_angle_s) and (angle_list&lt;thr_angle_s) and (angle_list&gt;thr_angle) and (angle_list&gt;thr_angle) and (angle_list&lt;thr_angle_s):
gesture_str = "love"
elif (angle_list&gt;5) and (angle_list&lt;thr_angle_s) and (angle_list&gt;thr_angle) and (angle_list&gt;thr_angle) and (angle_list&gt;thr_angle):
gesture_str = "one"
elif (angle_list&lt;thr_angle_s) and (angle_list&gt;thr_angle) and (angle_list&gt;thr_angle) and (angle_list&gt;thr_angle) and (angle_list&lt;thr_angle_s):
gesture_str = "six"
elif (angle_list&gt;thr_angle_thumb) and (angle_list&lt;thr_angle_s) and (angle_list&lt;thr_angle_s) and (angle_list&lt;thr_angle_s) and (angle_list&gt;thr_angle):
gesture_str = "three"
elif (angle_list&lt;thr_angle_s) and (angle_list&gt;thr_angle) and (angle_list&gt;thr_angle) and (angle_list&gt;thr_angle) and (angle_list&gt;thr_angle):
gesture_str = "thumbUp"
elif (angle_list&gt;thr_angle_thumb) and (angle_list&lt;thr_angle_s) and (angle_list&lt;thr_angle_s) and (angle_list&gt;thr_angle) and (angle_list&gt;thr_angle):
gesture_str = "yeah"
return gesture_str
</code></pre>

<p>&nbsp;</p>

<p>那这9个手势是怎样的形式呢?</p>

<p >由程序可知,这9个手势是以5个手指的状态来表现的,即手指是处于伸直状态还是弯曲状态。</p>

<p > &nbsp;</p>

<p>图11 手指排列顺序</p>

<p >&nbsp;</p>

<p >在图11中,若按由左至右的顺序来建立与数组angle_list[]的关系。并以&ldquo;1&rdquo;来表示伸直状态,以&ldquo;0&rdquo;来表示弯曲状态。则其判别条件就是看数组angle_list[]是否超过判别的角度,大于判别角,则为&ldquo;0&rdquo;,小于判别角,则为&ldquo;1&rdquo;。</p>

<p >这样我们就得到了9种手势的表现形式,见图12所示。</p>

<p > &nbsp;</p>

<p > &nbsp;</p>

<p>图12 &nbsp;9种手势</p>

<p>&nbsp;</p>

<p >掌握了前面的手势定义规则,就可以按照手语规范来改写手势识别程序,以得到手语识别的目标。</p>

<p >当然要识别完整的手语信息还是比较困难的,因为在手语中不仅仅是静态的手势,还包含着更复杂的动态手姿,如移动、环绕、摆动、翻转、屈展以及与身体状态相配合的手势等,是一个非常据有研究挑战性的课题。</p>

Jacktang 发表于 2024-10-21 07:50

<p>完全能识别完整的手语信息这个是挑战</p>

jinglixixi 发表于 2024-10-21 13:12

Jacktang 发表于 2024-10-21 07:50
完全能识别完整的手语信息这个是挑战

<p>的确,其内容太多且复杂,但可以进行一些简单的尝试。</p>
页: [1]
查看完整版本: 【K230嵌入式AI开发板测评】+手语简单识别篇(二)