最好的电子音响科技diy制作网站

haoDIY_音响电子电脑科技DIY小制作发明

手势:手势控制机器人鹰使用图像处理界面

时间:2017-05-22 21:57来源:未知 作者:admin 点击:
步骤12:运动控制: PySerial: 我们使用Python库转换Pyserial模块处理配置数据处理成串行数据传送到Arduino Uno通过Arduino的USB电缆。 一旦一个特定的手势检测OpenCV我们创建一个临时变量说X和分配给它的一些独特
手势:手势控制机器人鹰使用图像处理界面

手势鹰展示techevince 4为基础的人机界面,简单的图像处理。其特征在于,没有额外的传感器和可穿戴手套是除了需要控制机器人运行的汽车差速传动原理。在下面,我们将带您通过在系统中使用的对象跟踪和手势检测的工作原理。这个项目的源代码可以从GitHub下载链接:通过https://github.com/shwetank6044/gesture-hawk.git

步骤1:必需的东西:

必需的东西:

 

  1. L298N电机驱动
  2. 直流电动机
  3. 机器人汽车底盘
  4. 微控制器
  5. 锂电池
  6. Arduino USB电缆(长)
  7. 用python opencv库

 

步骤2:工作原理:

工作原理:

手势鹰一三相处理系统你可以看到上面的图。

步骤3:输入捕获和处理:

输入捕捉和处理:

输入捕捉可以在更广泛的类别,在上面的图中给出的理解。

从环境中提取的手的形状,我们需要使用掩蔽或一定颜色滤波(在这种情况下–紫蓝色的)。你需要做的是,将图像由BGR HSV格式,可以用下面的代码片段了。


		

HSV = CV2。cvtcolor(框架、CV2。color_bgr2hsv)

现在,下一步是找到HSV参数所需的范围来提取出一方面通过面罩或过滤器。对于这一点,最好的方法是使用跟踪杆找到一个合适的范围。这是一个用于此项目的跟踪条的截图。

步骤4:

 

步骤5:

在这里,有一个代码段下面做面膜建设这样一个搜索栏:


		

进口CV2

进口NumPy NP DEF没有(x): 通 CV2。namedwindow(图像的) img = CV2。视频采集(0) CV2。createtrackbar('l_h ','图像',110255,没有 CV2)。createtrackbar('l_s ','图像',50255,没有 CV2)。createtrackbar('l_v ','图像',50255,没有 CV2)。createtrackbar('h_h ','图像',130255,没有 CV2)。createtrackbar('h_s ','图像',255255,没有 CV2)。createtrackbar('h_v ','图像',255255,没有 而(1)

HSV = CV2。cvtcolor(框架、CV2。color_bgr2hsv) LH = CV2。gettrackbarpos('l_h ','图像') LS = CV2。gettrackbarpos('l_s ','图像') LV = CV2。gettrackbarpos('l_v ','图像') HH = CV2。gettrackbarpos('h_h ','图像') hs = CV2。gettrackbarpos('h_s ','图像') HV = CV2。gettrackbarpos('h_v ','图像') lower_r = NP。阵列([ LH、LS、LV ]) higher_r = NP。阵列([ HH、HS、高压]) 面膜= CV2。范围(HSV,lower_r,higher_r) RES = CV2 bitwise_and(框架。、框架、面膜=面膜) CV2。imshow(图像,RES) K = CV2。WaitKey(1)和0xff

步骤6:处理部分:

处理部分:

好了,我们有了一手的几何形状,现在是时候去利用它,利用它来找出手势。

凸包:

通过凸壳,我们努力去适应一个多边形近似通过形状存在极值点。左边的图像显示的多边形近似,被分配到的形状与凸点红色标记。

凸点,从这一侧面形状近似多边形最远的点。但是,凸包问题是在计算过程中,我们将得到所有的凸点阵列,但我们需要的是蓝色的尖凸点。我们将告诉你为什么它是必需的。

找到这个凸点,我们需要运用垂直距离公式求距离的凸点与最近的一面。我们观察到蓝色的尖点具有从侧面最大距离,所以我们得到了这一点。

步骤7:

 

步骤8:

接下来我们需要找到加入的拇指尖线倾斜(或极值点)这个凸点的水平。

步骤9:

在上述情况下,角α应该如果手势是左转0度到90度之间。这是谭(α)应该是积极的。

步骤10:

在上述情况下,角α应该是180到90度之间,如果手势是向右转。这是谭(α)应该是负的。

因此,如果谈α阳性,然后左转。如果Tanα是负的,然后右转。现在,它的时间来看看如何检测最重要的停止命令。

在这里,一个指定的比例(通过打试验发现)检查和案件最多,这比距离保持在这个特定的范围内。

步骤11:

最后,提出了运动姿态进行了matchshape()功能在OpenCV。这个功能比较两countors的形状,在这种情况下,正确的训练实例之间在以上图片在上图左边的轮廓。它返回一个值的范围从0到2或3,根据在两个轮廓的形状变化。对于同一等高线,则返回0。


		

ret = CV2。matchshapes(CNT1,cnt2,1,0.0)

在这里,CN1和CNT2是两个轮廓,将与。#p#分页标题#e#

步骤12:运动控制:

运动控制:

PySerial:

我们使用Python库转换Pyserial模块处理配置数据处理成串行数据传送到Arduino Uno通过Arduino的USB电缆。一旦一个特定的手势检测OpenCV我们创建一个临时变量说“X”和分配给它的一些独特的价值,并且将它转换为使用以下命令行串行输入:—

进口系列#导入库
 <BR> Pyserial模块处理配置串口,串口(“<名称>的端口,波特率为9600,超时= 0)#设置串行输出,端口名是港口的数据传输会发生名称。</P > <P>写串行。(b'x”)# X发送到端口…字母B是将这个字符串转换为字节。</P >

Arduino的处理:

现在Arduino是以这样一种方式,每个不同的序列X是线性映射到特定的行动负责机器人的平滑运动编码(说左手势检测将触发汽车左转右)。我们可以控制每个车轮的运动的平移以及旋转改变正确的代码。

L298N电机驱动:—

驱动电机作为电动机和电源之间的中介由于电动机不能直接供电,由于低电压额定值。Li Po Battery是连接到12V输入端和我们的Arduino的5V插座连接到电机驱动器的5V输入插座最后接地Li Po以及普通电机驱动的地面插座Arduino。

现在的电机端子连接在插座了。最后我们将输入端子的电机PWM输出插座的Arduino让我们自由决定的旋转和翻译方面的运动准确。

步骤13:


(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片