基于C++利用OpenCV视觉库进行手掌图像计算机视觉分析测量手指的长度与宽度
资源下载地址:https://download.csdn.net/download/sheziqiong/85620401
实验简介
通过摄像头获得完整的手掌图像,利用OpenCV视觉库进行计算机视觉分析,通过计算机视觉技术,对图像进行处理分析,利用滤波、边缘检测、角点检测、霍夫变换等方式,精确得到手掌上五根手指的长度与宽度、手掌虎口的角度、手掌的宽度以及手腕的宽度。完成对手掌各个参数的精确测量。
实验目的
测量大拇指的长度与宽度
实验环境与工具
IDE:Visual Stdio
OpenCV
C++
整体思路
手掌检测,是手套等用品生产商为了给客户更为精细的定制化需求而急需的计算机视觉技术。通过手机摄像头采集含有手掌的图像或视频流,并自动在图像中检测和跟踪手掌,进而对检测到的手掌进行手部的一系列相关技术。 因为手套的舒适度与手套大小规格是否与人的手掌相契合有着密切的关系,因此对手掌视觉测量的精度提出很高的要求,手掌的视觉测量的难点如下:
·特征过多:因为手掌纹路较多,因此难以对手掌整体轮廓进行非常精准的描绘。
·误差难以消除:手掌长度通过参照物来确定,因为参照物会随着视觉变化而产生不可避免的形变,因此在长度单位映射时存在不可避免的误差。
因此我们采用硬币充当参照物比例尺,利用霍夫检测圆的方法求出单位像素所映射的长度。因此实验步骤如下:
求出硬币直径长度,并建立坐标尺,求出单位像素映射的长度,单位为厘米/像素。
通过标准圆与标准手掌对被拍照手掌进行轮廓与大小规约,避免因为拍摄角度等问题导致参照物与比例尺之间的直接误差。如下图所示:
- 将手掌进行刨分,对大拇指长度与宽度进行测量。
使用均值滤波先对图像进行初步处理,过滤不需要的轮廓与边缘,并剔除噪点。
通过Canny算子进行边缘检测,并对检测出的边缘进行筛选,剔除无意义的边缘。
使用FindContours函数对边缘进行提取并描述。如下图所示:
通过霍夫变换,将手指等弯曲的曲线化成直线并提取像素点进行像素点运算。求出所需的像素点个数并进行计算。
结果如下图所示:
误差在0.3cm以内。
- 将手掌进行刨分,对虎口进行测量。
·使用均值滤波先对图像进行初步处理,过滤不需要的轮廓与边缘,并剔除噪点。
·通过Canny算子进行边缘检测,并对检测出的边缘进行筛选,剔除无意义的边缘。
·使用FindContours函数对边缘进行提取并描述。如下图所示:
通过霍夫变换,将虎口等弯曲的曲线化成直线并提取像素点进行像素点运算。求出所需的像素点个数并进行计算。
结果如下图所示:
得出手掌虎口角度参数。
- 将手掌进行刨分,对手腕宽度进行测量。
·使用均值滤波先对图像进行初步处理,过滤不需要的轮廓与边缘,并剔除噪点。
·通过Canny算子进行边缘检测,并对检测出的边缘进行筛选,剔除无意义的边缘。
·使用FindContours函数对边缘进行提取并描述。如下图所示:
·通过霍夫变换,将手腕等弯曲的曲线化成直线并提取像素点进行像素点运算。求出所需的像素点个数并进行计算。
结果如下图所示:
误差在0.3cm以内。
- 将手掌进行刨分,对食指长度与宽度进行测量。
·使用均值滤波先对图像进行初步处理,过滤不需要的轮廓与边缘,并剔除噪点。
·通过Canny算子进行边缘检测,并对检测出的边缘进行筛选,剔除无意义的边缘。
·使用FindContours函数对边缘进行提取并描述。如下图所示:
·通过霍夫变换,将手指等弯曲的曲线化成直线并提取像素点进行像素点运算。求出所需的像素点个数并进行计算。
结果如下图所示:
误差在0.3cm以内。
- 将手掌进行刨分,对小拇指长度与宽度进行测量。
·使用均值滤波先对图像进行初步处理,过滤不需要的轮廓与边缘,并剔除噪点。
·通过Canny算子进行边缘检测,并对检测出的边缘进行筛选,剔除无意义的边缘。
·使用FindContours函数对边缘进行提取并描述。如下图所示:
·通过霍夫变换,将手指等弯曲的曲线化成直线并提取像素点进行像素点运算。求出所需的像素点个数并进行计算。
结果如下图所示:
- 将手掌进行刨分,对手掌宽度进行测量。
·使用均值滤波先对图像进行初步处理,过滤不需要的轮廓与边缘,并剔除噪点。
·通过Canny算子进行边缘检测,并对检测出的边缘进行筛选,剔除无意义的边缘。
·使用FindContours函数对边缘进行提取并描述。如下图所示:
·通过霍夫变换,将手掌周边等弯曲的曲线化成直线并提取像素点进行像素点运算。求出所需的像素点个数并进行计算。
结果如下图所示:
- 将手掌进行刨分,对无名指长度与宽度进行测量。
·使用均值滤波先对图像进行初步处理,过滤不需要的轮廓与边缘,并剔除噪点。
·通过Canny算子进行边缘检测,并对检测出的边缘进行筛选,剔除无意义的边缘。
·使用FindContours函数对边缘进行提取并描述。如下图所示:
·通过霍夫变换,将手指等弯曲的曲线化成直线并提取像素点进行像素点运算。求出所需的像素点个数并进行计算。
结果如下图所示:
手掌实际参数:
误差在0.3cm以内。
资源下载地址:https://download.csdn.net/download/sheziqiong/85620401
基于C++利用OpenCV视觉库进行手掌图像计算机视觉分析测量手指的长度与宽度相关推荐
- 基于opencv视觉库,通过numpy进行像素矩阵处理,压缩图片、做像素图
1. numpy库基本介绍 NumPy 是一个Python包(Numeric Python)它是一个由多维数组对象和用于处理数组的例程集合组成的库,其支持大量高维度数组与矩阵运算.NumPy 也针对数 ...
- 利用OpenCV的函数putText()为图像添加数值型文本内容
OpenCV的函数putText()的原型如下: C++原型: void cv::putText(InputOutputArray img,const String & text,Point ...
- 利用OpenCV的函数equalizeHist()对图像作直方图均衡化处理
如果一幅图像的灰度值集中在某个比较窄的区域,则图像的对比度会显得比较小,不便于对图像的分析和处理. 图像的直方图均衡化可以实现将原图像的灰度值范围扩大,这样图像的对比度就得到了提高,从而方便对图像进行 ...
- 基于Python利用OpenCV实现Hough变换的形状检测
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 今天我们将学习如何借助霍夫变换技术来检测图像中的直线和圆. 什么是 ...
- 利用OpenCV的Grabcut()函数实现图像的前景与背景的分割-并对Grabcut()作详细介绍
图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 Graphcut是一种基于图论的分割方法,在计算 ...
- 利用OpenCV的imread将RGB图像转化为灰度图像
图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 通常,我们是利用cvtColor将图像转化为灰度 ...
- 利用OpenCV的flip()函数实现图像的水平镜像(水平翻转)、垂直镜像(垂直翻转)
OpenCV的函数flip()可以实现图像沿x轴翻转.沿y轴翻转.同时沿x轴和y轴翻转,从而实现图像的水平镜像和垂直镜像. 函数flip()的C++原型如下: void cv::flip(InputA ...
- 利用OpenCV的inpaint函数实现图像的污点修复
图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 inpaint函数的原型如下: void inp ...
- 基于opencv第三方视觉库,通过内网IP调用手机摄像头,实现人脸识别与图形监测
1. 安装opencv视觉库 OpenCV 是一个开源的计算机视觉库,OpenCV 库用C语言和 C++ 语言编写,可以在 Windows.Linux.Mac OS X 等系统运行.同时也在积极开发 ...
最新文章
- 优达学城《DeepLearning》2-2:迁移学习
- oracle linux rdac,redhat 6.4 安装RDAC
- 计算机英语的语言特点及教学,计算机英语的语言特点及教学.doc
- IT行业培训必读:优秀程序员的十个习惯
- thymeleaf 中select下拉回显
- Html5与CSS3权威指南 百度云下载
- 小米MIX 4内部代号曝光:“众神之王”三季度降临
- pagehelper自定义 count sql_Spring Boot 2.x(十三):你不知道的PageHelper
- 【一分钟论文】轻松解读Semi-supervised Sequence Learning半监督序列学习
- PHP实现Restful风格的API(转)
- jQuery Callback 方法
- 【企业级框架整合】Springmvc+mybatis+restful+bootstrap框架整合
- 数据结构期末考试【含答案】
- oracle字段类型number默认值,Oracle 字段类型 | 学步园
- 软考高级 真题 2011年下半年 信息系统项目管理师 综合知识
- 通过阿里云api获取ecs主机信息
- mybatis异常:java.lang.ExceptionInInitializerError
- mysql黑盒测试_黑盒测试记录二
- 【python】字符串string的截取;获取字符串内的一串
- 个人对AutoResetEvent和ManualResetEvent的理解