教你用OpenCV和Python实现手掌检测和手掌计数

点击上方码农的后花园”,选择星标” 公众号

  精选文章,第一时间送达

最近号主由于某些原因,并没有定期更新,但是一直记着你们呢,你们只要记住号主与你们同在就好啦~  好久不见,甚是想念~  

号主想要开一个关于OpenCV系列教程,后期定期更新,如果觉得可以的话,请点赞支持一下哦!话不多说,开始今天的干货篇。

  • Python3

  • numpy函数库

  • OpenCV-Python

  • Windows10 + Anaconda+Pycharm

OpenCV-Python的下载安装

第一步:配置永久镜像源

用户文件夹下新建一个pip文件夹,记事本新建一个pip.txt文件,配置阿里云镜像,保存后修改pip.txt后缀名为pip.ini.

教你用OpenCV和Python实现手掌检测和手掌计数_第1张图片

第二步:下载安装

在Pycharm中,打开Terminal,切换到你想要下载安装的虚拟环境中(不会的话,看我的Python系列教程),然后输入如下命令,即可快速下载安装OpenCV-Python。

教你用OpenCV和Python实现手掌检测和手掌计数_第2张图片

1.导入OpenCV库并读取手掌图片

教你用OpenCV和Python实现手掌检测和手掌计数_第3张图片

2.图像处理

教你用OpenCV和Python实现手掌检测和手掌计数_第4张图片

教你用OpenCV和Python实现手掌检测和手掌计数_第5张图片

3.手掌轮廓绘制

教你用OpenCV和Python实现手掌检测和手掌计数_第6张图片

根据二值化后的图像,我们可以很明显的看到手掌边缘和图像的边缘,使用OpenCV中的findCountours函数能够帮助我们有效的找到目标的轮廓。

教你用OpenCV和Python实现手掌检测和手掌计数_第7张图片

4.手掌凸包检测

这里的凸包是指由手掌轮廓点最外层由线连起来的轮廓的凸边形,这里凸点是由指尖和手腕底部两端点构成。

教你用OpenCV和Python实现手掌检测和手掌计数_第8张图片

教你用OpenCV和Python实现手掌检测和手掌计数_第9张图片

5.手掌凸缺陷检测

教你用OpenCV和Python实现手掌检测和手掌计数_第10张图片

如下图所示,defects最后代表的是两个手指之间的凹陷处,对于我们刚刚检测到的凸包而言是缺陷,手掌与凸包检测轮廓线的任何偏离的地方都可以视为凸缺陷。

这里defects会包含每两根手指凹进去的点和两根手指指尖两点组成三角形数据的3个点(起点start、终点end、最远点far),还会返回到最远点的距离。

6.手指个数计数

教你用OpenCV和Python实现手掌检测和手掌计数_第11张图片

利用我们的凸缺陷检测可以得到,如上面代码,我们得到每根手指两两组成的凹三角形的三点,就可以分别计算下图中三角形三边的a,b,c。

 教你用OpenCV和Python实现手掌检测和手掌计数_第12张图片

又由余弦定理:

我们就可以依次计算出两两手指之间的角度 r, 当角度 r<90度时,我们就将其当做手指,cnt +=1,从而达到手指计数。

最终检测结果:

教你用OpenCV和Python实现手掌检测和手掌计数_第13张图片

好啦,这期就到这里了,手掌检测和计数原代码, 后台回复关键字:项目实战,即可获取下载使用,下期见啦~

更多优质内容?等你点在看

你可能感兴趣的:(python,opencv,人工智能,计算机视觉,数据可视化)