#基于VR环境下的手指识别键盘输入# 基于轮廓质心的手部识别优化(一)

在完成了之前提到的工作之后,发现在实际操作的时候,存在一定的问题:

(1)由于识别的是轮廓凸缺陷,所以得到的最终结果是一个点组,包括起始点、结束点、最远点和到最远点之间的距离。在实际运用中。想要用一个3D的手部模型与识别出来的手部进行绑定。因为涉及手掌整体和各个手指的移动,所以需要对手掌和手指分别进行定位。但是由于只保存了五个指尖点,所以采用平均的方法计算出中心点。由于指尖位置存在一定程度的跳变,所以实验效果并不理想,容易出现手掌和手指的分离。

(2)由于基于颜色识别,所以受到背景环境色的影响较大。当背景色过于杂乱或者接近肤色时,会产生一定的影响。目前的解决方案是,采购了外置摄像头,保持摄像头垂直角度从上向下拍摄,人手能够平摊在键盘区域上方。构思或许带上颜色比较鲜艳的手套也是一种解决方案。


下面是对问题(1)的解决方案。

要实现检测到的手部位置和环境中模型的实时更新,就需要一定的数据传递。将获取到的手部信息实时传递给环境中的模型,只需要在模型脚本中获取手部识别脚本上的变量即可。

这个过程中,需要注意的是,手部识别的脚本坐标属于UGUI的坐标,而模型的坐标属于世界坐标。直接采用坐标xyz值的传递,会导致位置出错,需要使用一个函数进行坐标之间的转换。

public Vector3 WorldToUI(Camera camera,Vector3 pos){  
			CanvasScaler scaler = GameObject.Find("Canvas").GetComponent<CanvasScaler>();  
			float resolutionX =
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值