3D手势光流计算3D手势算法

测试场景:

1. 按照需求场景,在屏幕上固定摄像头位置(上面奥比中光、下面 Leapmotion
2. 打开摄像头, SDK 能够正常检测到单手 / 双手,识别到不同姿态的手势
3. 当有其他人的手势进入摄像头工作范围时,在被测者身后不会干扰之前锁定的手势识别功能,在被测者身前会重新锁定
4. AIO 使用场景:点击(进入功能模块)、拖拽、缩放、旋转、波动

测试对象:

1. 自研算法 + 限定硬件( 奥比中光 gemini 2 摄像头 + 27 AlO
2. 竞品: Leapmotion1 Leapmotion2 Leapmotion IR170 摄像头

测试算法:根据手势识别系统流程分析,目前手势算法主要包括三部分:静态手势、动态手势、手势识别             

            

GitHub - NVIDIA/flownet2-pytorch: Pytorch implementation of FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks

测试方案---准确性测试(帧率不同采用差值法保证两者一致)

OpenCV库对两个视频流进行帧率调整和帧间插值处理的Python脚本

1. 导入OpenCV

2. 读取两个视频流

3. 获取两个视频的帧率

4. 确定帧目标:选择两个视频帧率中的较小值作为目标帧率,确保输出的视频不会比任何输入视频的帧率更快

5. 打开视频写入器:配置一个视频写入器,用于将处理后的视频写入到output_video.mp4文件中

6. 读取视频帧并进行插值处理:无限循环,用于逐帧读取两个视频,并对每一帧进行插值处理。如果任何一个视频到达了结尾,循环就会终止

7. 插值处理:对于每一对帧,代码首先调整低帧率视频的尺寸以匹配高帧率视频的尺寸。然后,使用cv2.addWeighted方法对这两帧进行加权平均,实现帧间插值

8. 写入输出视频:处理后的帧被写入到输出视频中

9. 释放资源:在脚本结束时,所有的视频流和写入器资源都被释放,并且关闭了所有OpenCV窗口

测试方案---准确性测试(光流计算)

1. 数据采集: 让两个手势算法的摄像头同时拍摄手的动作过程。确保两个摄像头的设置相同,包括帧率、分辨率等

2. 视频序列获取: 将两个摄像头拍摄到的视频序列保存下来

3. 预处理:对视频序列进行预处理,如图像裁剪、大小调整等,以确保两个视频的图像属性一致

4. 光流计算:使用光流法在两个视频序列中计算光流向量。可以选择全局光流计算,也可以在感兴趣的区域内进行局部光流计算,具体取决于需求

5. 相似度计算: 计算两个视频序列中的光流向量相似度。可以使用一些相似度度量方法,如欧氏距离、余弦相似度等

6. 结果分析: 分析相似度的结果,比较两个手势算法的性能。如果两个视频序列的光流向量相似度较高,说明两个算法在光流特征上表现一致;如果相似度较低,说明它们在手势的光流表达上存在差异

使用OpenCV库进行两个图像之间的特征匹配和透视变换

1. 导入必要的库: cv2 OpenCV 库)和 numpy
2. 读取两个图像文件 image_A.jpg image_B.jpg 并将它们存储在 image_A image_B 变量中。
3. 将读取的图像转换为灰度图像,并分别存储在 gray_A gray_B 变量
4. 创建一个 SIFT 特征点提取器对象
5. 使用 SIFT 特征点提取器从灰度图像中提取特征点和描述符。特征点和描述符分别存储在 keypoints_A descriptors_A keypoints_B , descriptors_B 变量中
6. 创建一个 FLANN 匹配器对象,用于匹配特征描述符
7. 使用 FLANN 匹配器对两个图像的描述符进行匹配,并将匹配结果存储在 matches 变量中
8. 从匹配结果中选择好的匹配点,只保留距离小于第二个最近点距离 0.7 倍的匹配点
9. 获取匹配点的坐标,并将它们存储在 pts_A pts_B 变量中
10. 使用透视变换矩阵从 pts_A pts_B 计算透视变换矩阵
11. 使用透视变换矩阵对其中一个图像(这里是 image_A 进行矫正,

并将结果存储在image_A_registered变量中
12. 显示原始图像和矫正后的图像

基于OpenCV库来检测手部的运动轨迹

1. 使用Farneback方法计算光流场。此方法提供稠密(像素到像素)的运动估计。用于控制算法的精度和计算复杂度的超参数),通过计算连续帧之间的像素运动来检测运动

2. 打开一个视频文件,读取每一帧,将每一帧转换为灰度图,计算该帧与前一帧之间的光流场

3. 计算HSV颜色空间中的光流角度和幅度。角度被转换为度数,用于设置HSV空间中的色调(Hue

4. 幅度被归一化并设置为饱和度(Saturation

5. 使用cv2.cvtColorHSV图像转换为BGR格式,并显示处理过程,释放视频文件并关闭所有OpenCV窗口

思考:如何保证采集的真实视频和摄像头识别的视频位置一致?如何精确到毫米级别?数据如何对比?

摄像头的角度、范围、参数不同,出来的结果会有很大的误差

双目相机参数无法获取

模型无法获取到3D坐标

RGB图片对齐后计算光流

标定关节点坐标

 计算光流

conda create -n 3dgesture python=3.8

conda activate 3dgesture

​pip install torch

1. import torch时报错ModuleNotFoundError: No module named 'torch'

     在成功安装完pytorch后打开pycharm时import torch时会报错“ModuleNotFoundError: No module named 'torch'

一、打开文件的setting选项

二、找到python interpreter选项,点击Add Interpreter

 三、如图所示添加编译器 点击add 选择Conda Environment 选择Python=3.8

 四、一直点OK,完成配置。重启pycharm再运行import torch

2. AttributeError:module 'cv2.cv2' has no attribute 'DualTVL1OpticalFlow_create' 解决

搜索该问题后,很多解决答案是:

pip install opencv-python
pip install opencv-contrib-python
但是我的问题还是没解决,原因是默认安装的版本太高,太高反而不支持cv中的函数,因此操作如下:

第一步:卸载

pip uninstall opencv-python
pip uninstall opencv-contrib-python
第二步:按指定版本重新安装

pip install opencv_python==3.4.2.17
pip install opencv-contrib-python==3.4.2.17

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东方狱兔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值