基于python+opencv实现简易手势识别(上下左右)
本来是一个小组作业,最后分给了我用摄像头实现手势识别,又不太想用神经网络实现,就直接基于轮廓检测实现了。
不过值得一提的是,似乎误差较大,受环境影响较大。
实验内容:将手掌放至在红色方框内,然后像下图一样,进行摆放姿势,确定上下左右。




都™工科生了,就别喷脸了
不清楚后续会不会更新,修改使用更好的算法。
不过肯定应该会更新C++甚至是C版本的,看小组内其他人的需求吧。
不过首先还是看一下,我们是如何确定上下左右的吧:
值得一提的是,slope列表是用来存储上图中的那些红色斜线的斜率。
也就意味着,我们必须要求slope要大于1才能进行上下左右的判断。(如果是1,此时我们已经把手掌缩起来了,故这里我只检测到了1个,就设成下了)
向上,意味着多个斜率,其中要有一个是大于1,有一个是小于-1;注意,这里是说多个,有就行了。
然后那个什么any_greater是自己随便写的一个很简单的函数,属实是丑陋;
那么同理,向左呢?除去向上的前提,还要求斜率要全都大于0(图像是镜像的,所有是大于,而不是小于)。
向右同理。
那么向下,我们这里继续缩小斜率,然后顺便改了一下斜率值。因为向下,他改变了凹凸点...然后线就少了,就在这里做了一些改变。
下面是代码:
属实是丑陋了....

洗澡的时候还是觉得太丑陋了
于是改了
这下舒服了...