手势识别模块+Python给PC增加点快捷键
来源:互联网 发布:centos net snmp 编辑:程序博客网 时间:2024/05/07 06:12
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">最近在网上看到一款手势传感器,感觉挺有趣。</span>
据说可以检测到人手从上面滑过的时候所经过的方向。比如从上往下滑动,从左往右滑动,或者从远到近。
好奇之下有了个新点子,就拿来测试测试了。
用过标题大概也都猜到了,我就是想用他来控制电脑,给电脑增加一点快捷键。快速的打开电脑里的应用程序等一些功能。
先用UNO连接上传感器。
接下来就是见证奇迹的时刻了(并不是。。随口一说),下载好sparkfun的库,在uno中打开库中的例程,gestureTest,这个例程功能非常简单,当你有手势的时候从串口输出你的手势,例如你从上到下则输出DOWN,从左到右则输出RIGHT等等。去掉一些测试用的输出,程序简化成如下:
#include <Wire.h>#include <SparkFun_APDS9960.h>#define APDS9960_INT 2 // Needs to be an interrupt pinSparkFun_APDS9960 apds = SparkFun_APDS9960();int isr_flag = 0;void setup() { // Initialize Serial port Serial.begin(115200); // Initialize interrupt service routine attachInterrupt(0, interruptRoutine, FALLING); apds.init(); apds.enableGestureSensor(true);}void loop() { if( isr_flag == 1 ) { handleGesture(); if(digitalRead(APDS9960_INT) == 0){ apds.init(); apds.enableGestureSensor(true); } isr_flag = 0; }}void interruptRoutine() { isr_flag = 1;}void handleGesture() { if ( apds.isGestureAvailable() ) { switch ( apds.readGesture() ) { case DIR_UP: Serial.println("UP"); break; case DIR_DOWN: Serial.println("DOWN"); break; case DIR_LEFT: Serial.println("LEFT"); break; case DIR_RIGHT: Serial.println("RIGHT"); break; case DIR_NEAR: Serial.println("NEAR"); break; case DIR_FAR: Serial.println("FAR"); break; default: Serial.println("NONE"); } }}
打开串口助手 大概显示是这样的
可以看出显示了很多的NONE(未识别),说明这个模块的识别率实在是堪忧。。不过如果降低移动速度,并对传感器进行良好的固定,貌似是可以增加识别率的。
接下来就是电脑端的程序了。电脑端同样还是使用Python(毕竟比较简单啊。。)读取串口数据,判断字符,执行命令。
先想想我要做什么吧。。
苦思冥想30s,就做个锁屏再做个快捷打开计算器(嵌入式工程师太常用了)吧。程序如下:
# -*- coding:utf-8 -*-#from ctypes import *import serialfrom time import sleepimport osuser32 = windll.LoadLibrary('user32.dll')S1=serial.Serial(port='COM7',baudrate=115200,bytesize=8,parity='N',stopbits=1,timeout=5)print "serial.isOpen() =", S1.isOpen()temp=""while True: sleep(0.2) while S1.inWaiting() > 0: temp+= S1.read() #读取数据 if temp: if "FAR" in temp: user32.LockWorkStation() elif "LEFT" in temp: os.system('calc') print temp temp=""S1.close()
左划是打开计算器,远离是锁屏。嗯,看看效果。
嗯。。完全停不下来。。
0 0
- 手势识别模块+Python给PC增加点快捷键
- 增加手势和识别手势
- Android增加、识别用户手势
- 给插件增加快捷键
- 用swig给Python增加Linux下的IPC模块
- 手势(Gesture)的增加和识别
- 为activity增加左右手势识别
- 给一个窗体增加快捷键
- 给skynet增加websocket模块
- 给golang增加websocket模块
- 给skynet增加websocket模块
- cocos2d-x 3.0 中增加手势识别功能
- python中增加新模块
- [树莓派]Raspbian系统给LxTerminal增加快捷键
- 如何给Eclipse的Plugin增加快捷键
- 如何给内核增加yaffs2模块
- 关于点击uisearchbar后给屏幕增加手势的问题
- Python验证码识别模块
- WebService到底是什么?
- Spring mvc4使用JSON包变更
- 网关,MAC,IP,子网掩码,网桥,eth0
- JAXB实现xml与javabean的转换
- 有向图的邻接表描述 c++
- 手势识别模块+Python给PC增加点快捷键
- FSMC
- Android TabLayout学习资料
- JS浮点数运算出现Bug的解决方案
- 追求错了,当然痛苦
- 处理器指令集 i386 x86_64 arm64 armv7 armv7s
- jQuery-事件委托案例练习
- css制作简单的三角形
- 拍照和从相册选择图片