### 实验简介
通过摄像头获得完整的手掌图像,利用OpenCV视觉库进行计算机视觉分析,通过计算机视觉技术,对图像进行处理分析,利用滤波、边缘检测、角点检测、霍夫变换等方式,精确得到手掌上五根手指的长度与宽度、手掌虎口的角度、手掌的宽度以及手腕的宽度。完成对手掌各个参数的精确测量。
### 实验目的
测量大拇指的长度与宽度
### 实验环境与工具
IDE:Visual Stdio
OpenCV
C++
### 整体思路
手掌检测,是手套等用品生产商为了给客户更为精细的定制化需求而急需的计算机视觉技术。通过手机摄像头采集含有手掌的图像或视频流,并自动在图像中检测和跟踪手掌,进而对检测到的手掌进行手部的一系列相关技术。 因为手套的舒适度与手套大小规格是否与人的手掌相契合有着密切的关系,因此对手掌视觉测量的精度提出很高的要求,手掌的视觉测量的难点如下:
·特征过多:因为手掌纹路较多,因此难以对手掌整体轮廓进行非常精准的描绘。
·误差难以消除:手掌长度通过参照物来确定,因为参照物会随着视觉变化而产生不可避免的形变,因此在长度单位映射时存在不可避免的误差。
因此我们采用硬币充当参照物比例尺,利用霍夫检测圆的方法求出单位像素所映射的长度。因此实验步骤如下:
1. 求出硬币直径长度,并建立坐标尺,求出单位像素映射的长度,单位为厘米/像素。
2. 通过标准圆与标准手掌对被拍照手掌进行轮廓与大小规约,避免因为拍摄角度等问题导致参照物与比例尺之间的直接误差。如下图所示:
![](img/1.png)
3. 将手掌进行刨分,对大拇指长度与宽度进行测量。
使用均值滤波先对图像进行初步处理,过滤不需要的轮廓与边缘,并剔除噪点。
通过Canny算子进行边缘检测,并对检测出的边缘进行筛选,剔除无意义的边缘。
使用FindContours函数对边缘进行提取并描述。如下图所示:
![img](img/11.png)
通过霍夫变换,将手指等弯曲的曲线化成直线并提取像素点进行像素点运算。求出所需的像素点个数并进行计算。
结果如下图所示:
![img](img/12.png)
误差在0.3cm以内。
4. 将手掌进行刨分,对虎口进行测量。
·使用均值滤波先对图像进行初步处理,过滤不需要的轮廓与边缘,并剔除噪点。
·通过Canny算子进行边缘检测,并对检测出的边缘进行筛选,剔除无意义的边缘。
·使用FindContours函数对边缘进行提取并描述。如下图所示:
![img](img/21.png)
通过霍夫变换,将虎口等弯曲的曲线化成直线并提取像素点进行像素点运算。求出所需的像素点个数并进行计算。
结果如下图所示:
![img](img/22.png)
得出手掌虎口角度参数。
5. 将手掌进行刨分,对手腕宽度进行测量。
·使用均值滤波先对图像进行初步处理,过滤不需要的轮廓与边缘,并剔除噪点。
·通过Canny算子进行边缘检测,并对检测出的边缘进行筛选,剔除无意义的边缘。
·使用FindContours函数对边缘进行提取并描述。如下图所示:
![img](img/31.png)
·通过霍夫变换,将手腕等弯曲的曲线化成直线并提取像素点进行像素点运算。求出所需的像素点个数并进行计算。
结果如下图所示:
![img](img/32.png)
误差在0.3cm以内。
6. 将手掌进行刨分,对食指长度与宽度进行测量。
·使用均值滤波先对图像进行初步处理,过滤不需要的轮廓与边缘,并剔除噪点。
·通过Canny算子进行边缘检测,并对检测出的边缘进行筛选,剔除无意义的边缘。
·使用FindContours函数对边缘进行提取并描述。如下图所示:
![img](img/41.png)
·通过霍夫变换,将手指等弯曲的曲线化成直线并提取像素点进行像素点运算。求出所需的像素点个数并进行计算。
结果如下图所示:
![img](img/42.png)
误差在0.3cm以内。
7. 将手掌进行刨分,对小拇指长度与宽度进行测量。
·使用均值滤波先对图像进行初步处理,过滤不需要的轮廓与边缘,并剔除噪点。
·通过Canny算子进行边缘检测,并对检测出的边缘进行筛选,剔除无意义的边缘。
·使用FindContours函数对边缘进行提取并描述。如下图所示:
![img](img/51.png)
·通过霍夫变换,将手指等弯曲的曲线化成直线并提取像素点进行像素点运算。求出所需的像素点个数并进行计算。
结果如下图所示:
![img](img/52.png)
8. 将手掌进行刨分,对手掌宽度进行测量。
·使用均值滤波先对图像进行初步处理,过滤不需要的轮廓与边缘,并剔除噪点。
·通过Canny算子进行边缘检测,并对检测出的边缘进行筛选,剔除无意义的边缘。
·使用FindContours函数对边缘进行提取并描述。如下图所示:
![img](img/61.png)
·通过霍夫变换,将手掌周边等弯曲的曲线化成直线并提取像素点进行像素点运算。求出所需的像素点个数并进行计算。
结果如下图所示:
![img](img/62.png)
9. 将手掌进行刨分,对无名指长度与宽度进行测量。
·使用均值滤波先对图像进行初步处理,过滤不需要的轮廓与边缘,并剔除噪点。
·通过Canny算子进行边缘检测,并对检测出的边缘进行筛选,剔除无意义的边缘。
·使用FindContours函数对边缘进行提取并描述。如下图所示:
![img](img/71.png)
·通过霍夫变换,将手指等弯曲的曲线化成直线并提取像素点进行像素点运算。求出所需的像素点个数并进行计算。
结果如下图所示:
![img](img/72.png)
手掌实际参数:
![img](img/73.png)
误差在0.3cm以内。
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
通过摄像头获得完整的手掌图像,利用OpenCV视觉库进行计算机视觉分析,通过计算机视觉技术,对图像进行处理分析,利用滤波、边缘检测、角点检测、霍夫变换等方式,精确得到手掌上五根手指的长度与宽度、手掌虎口的角度、手掌的宽度以及手腕的宽度。完成对手掌各个参数的精确测量。
资源推荐
资源详情
资源评论
收起资源包目录
100012643-基于C++(OpenCV)实现手掌测量(计算机视觉课程设计).zip (46个子文件)
handmea
LICENSE 1KB
说明.txt 196B
img
31.png 6KB
73.png 34KB
12.png 2KB
61.png 6KB
1.png 270KB
52.png 6KB
51.png 4KB
11.png 8KB
41.png 8KB
72.png 6KB
42.png 3KB
21.png 3KB
32.png 2KB
71.png 5KB
22.png 4KB
62.png 4KB
Computer vision course design
2.jpg 2KB
Head.h 295B
张衍希.h 497B
张衍希.cpp 795B
Computer vision course design.vcxproj.filters 4KB
孙文科.cpp 1KB
周宗宇.h 430B
Computer vision course design.cpp 750B
温奇凡.cpp 1KB
1.jpg 78KB
手指检测实际应用情况.png 356KB
张淇.cpp 1KB
Computer vision course design.vcxproj 12KB
高雅.cpp 1KB
闫彩东.cpp 1KB
高雅.h 346B
苏琥元.cpp 2KB
温奇凡.h 410B
苏琥元.h 542B
ConnectList.h 183B
计算机视觉课程设计.png 8KB
张淇.h 389B
周宗宇.cpp 1KB
闫彩东.h 465B
结果.png 7KB
孙文科.h 598B
Computer vision course design.sln 2KB
README.md 6KB
共 46 条
- 1
资源评论
- 2301_769759152024-04-08资源和描述一致,质量不错,解决了我的问题,感谢资源主。
神仙别闹
- 粉丝: 3810
- 资源: 7471
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功