基于Dragonboard 410c的简单手型识别

本文介绍了一种使用Python和OpenCV在Dragonboard410c开发板上实现的手型识别方法,能够从USB摄像头捕获图像并识别出石头、剪刀、布三种手势。

        手势交互是未来人机交互领域发展的一个重要方向,本文将参考http://lib.youkuaiyun.com/article/opencv/24642教大家如何在Dragoboard 410c开发板上使用Python脚本语言实现简单的手型识别,通过从USB摄像头获取手型图像,然后识别出石头-剪刀-布三个手型。

        

         具体实现步骤如下:

        1)获取USB摄像头图像:

         这里主要是通过Opencv提供的Python接口cv2,具体可以参考http://blog.youkuaiyun.com/andymfc/article/details/52875488,里面详细介绍了在dragonboard 410c上使用USB摄像头获取图像。

        2)设置手势区域

         在视频区域内设置一个手势区域,只有将手放入到该区域,系统才可以正确的识别手型,其他区域的系统不做处理,具体代码如下:

         #设置手型区域

         cv2.rectangle(img,(426,0),(640,250),(170,170,0))   

         #获取手型区域图像并保存

         img = img[0:210,426:640]
         cv2.imwrite("wif.jpg",img) 

         3)对检测区域进行图像处理,其核心代码如下:

            img = cv2.imread("wif.jpg",0)  
             element = cv2.getStructuringElement(cv2.MORPH_RECT,(11,11))  
             dilate = cv2.dilate(img, element)  
             erode = cv2.erode(img, element)    
             result = cv2.absdiff(dilate,erode);  
             retval, result = cv2.threshold(result, 40, 255, cv2.THRESH_BINARY);  
            result = cv2.bitwise_not(result);  
             result =cv2.medianBlur(result,23)  
        4)判断手型,其中部分核心代码如下:
             if width[i]<=20 or width[i]>=40:  
               width_jiandao= False  
               width_length += width[i]  
               if width_jiandao==True and count==2:  
               return 1;  
               if(area <8500):  
                #print 'stone;  
                return 0;  
                print "width_leng",width_length  
                 ......
                if(area>14000 or count>=3):  
                 #print 'paper';  
                return 2;  
                 if(width_length<110):  
                 #print 'rock';  
                return 1;  
                else:  
                #print 'paper';  
                return 2;  

         到这里我们就完成了整个手型识别的核心部分,具体的代码较长,直接附件http://pan.baidu.com/s/1kUKSxoV,用该代码运行就可以进行手型检测,效果如下图所示,虽然不准确,但是基本上可以检测出三种不同的手型:

         


         参考文献:download.youkuaiyun.com/download/afd_326/2760525;http://lib.youkuaiyun.com/article/opencv/24642

       

         

        

         

        

       

     

提供的引用内容中未提及dragonboard 410c简易音乐播放器的开发或使用信息。不过,一般来说开发dragonboard 410c简易音乐播放器,首先要确定系统环境,如引用中提到的Android或Linux系统。若在Linux系统下开发,可以借助ALSA(Advanced Linux Sound Architecture)或PulseAudio等音频框架来实现音频的播放功能。以下是一个简单Python示例代码,使用`pygame`库在Linux系统下播放音乐: ```python import pygame # 初始化pygame pygame.mixer.init() # 加载音乐文件 pygame.mixer.music.load("your_music_file.mp3") # 播放音乐 pygame.mixer.music.play() # 保持程序运行,直到音乐播放结束 while pygame.mixer.music.get_busy(): continue # 退出pygame pygame.mixer.quit() ``` 在Android系统下开发音乐播放器,可以使用Android的MediaPlayer类,以下是一个简单的Java代码示例: ```java import android.media.MediaPlayer; import android.os.Bundle; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { private MediaPlayer mediaPlayer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 创建MediaPlayer对象并加载音乐文件 mediaPlayer = MediaPlayer.create(this, R.raw.your_music_file); // 播放音乐 mediaPlayer.start(); } @Override protected void onDestroy() { super.onDestroy(); // 释放MediaPlayer资源 if (mediaPlayer != null) { mediaPlayer.release(); mediaPlayer = null; } } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值