Ubuntu使用haar+adaboost训练进行手势识别

2023-11-16

手势识别开源代码千千万,为啥我要用此方法,原因有三:
首先,我们项目要求这个手势识别是不分环境的,也就是半夜三更黑灯瞎火也能用,这一下子就把纯RGB的方式给去除了,而且也要考虑用户戴手套(手套颜色不限制)使用,那么肤色过滤什么的咱们再见;
其次,我们的运行主板计算量真的很弱鸡,深度学习推测什么的就别想跑了;
最后,我们只能选择深度信息来进行手势识别,深度信息的话可以有两种处理方式,一种是对深度灰度图像进行处理,一种是转换成点云用借助PCL进行处理,博主我以前玩过haar+adaboost做猫脸检测,所以就先试试对深度灰度图像进行处理。

正样本制作

正样本的图片我是从网上下载的,网址->Hands
就是这些爪子
总共11076张,我只选择了其中的1000张,然后我写了一个脚本将这些图片二值化:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import cv2
import os

path = '/home/ian/Downloads/hands/negative'
files = os.listdir(path)
for file in files:
    img = cv2.imread(path + '/' + file)
    gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #转为灰度图
    ret, thresh1 = cv2.threshold(gray_img, 220, 255, cv2.THRESH_BINARY_INV) #二值化
    img = cv2.resize(img, (img.shape[1]/8, img.shape[0]/8), interpolation=cv2.INTER_CUBIC) #缩放
    cv2.imwrite('/home/ian/Downloads/hands/' + file, img)

白爪子
尺寸是40X30,然后需要制作一个正样本的描述文件,我是用脚本弄的,生成的描述文件和图片放在同一个目录下即可

#!/usr/bin/python
# -*- coding: utf-8 -*-
import os
files = os.listdir('.')
f = open('./pos.txt','a')
for file in files:
    file = 'positive/' + file
    file = file + ' 1 0 0 40 30' # 数量 1 ,特征从像素0 0 到40 30
	f.writelines(file + '\n')
f.close()

后来我发现直接用这个就可以了: ls ./neg/. > neg.txt

生成的描述文件如下:
在这里插入图片描述

负样本制作

负样本制作和正样本类似,我是自己通过深度相机录制了5000张负样本图片,负样本的图片尺寸是80X60(没办法,训练主机太弱,太大的话算到猴年马月了)
好了,有了正负样本,下面就有进入关键的两个步骤了

样本处理

生成vec文件

进行训练需要用到一个后缀为vec的文件,生成办法可以通过opencv自带的opencv_createsamples,使用的例子如下,其余参数可以看其帮助。

opencv_createsamples.exe -vec pos.vec -info positive/pos.txt -bg negative/neg.txt -w 40 -h 30 -num 1000

经过这一步,就能获得在当前目录下获得一个叫pos.vec的文件,接着为了报错,在当前目录创建一个data的空文件夹,之后,输入以下指令,我们就开开心心等着开始训练吧。

opencv_traincascade -data ./data -vec ./pos.vec -bg ./neg.txt -numPos 700 -numNeg 3500 -numStage 15 -w 40 -h 30 -minHitRate 0.99 -maxFalseAlarmRate 0.5 -mode ALL

训练过程

慢慢等吧

遇到的问题

当我敲下训练指令时,报错接踵而至,让我措手不及,首先第一个是:

Train dataset for temp stage can not be filled. Branch training terminated.

解决办法:这是因为训练器找不到图片路径,检查一下程序去读描述文件时是否能够找到图片。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ubuntu使用haar+adaboost训练进行手势识别 的相关文章

  • 曲线/路径骨架二值图像处理

    我正在尝试开发一个可以处理图像骨架的路径 曲线的代码 我想要一个来自两点之间骨架的点向量 该代码在添加一些点后结束 我没有找到解决方案 include opencv2 highgui highgui hpp include opencv2
  • OpenCV 3 中的 FLANN 错误

    我运行的是 Ubuntu 14 04 我正在尝试使用 openCV 3 运行 FLANN 但出现错误 下面的所有内容都是通过使用 AKAZE 和 ORB 进行尝试的 但代码来自我尝试使用 ORB 的情况 我使用 ORB 来查找描述符和关键点
  • 当我将鼠标移到 Mat 关键字上时,Visual Studio 2017 冻结(OpenCv 3.4.1)

    我想在 Visual Studio 2017 中开发 openCv 项目 我下载了 opencv 预构建库并进行了必要的设置 那是 1 我添加了系统路径 build x64 vc14 bin 2 在 Visual Studio 中的项目属性
  • 指纹奇异点检测

    我正在尝试确定指纹的核心点和增量点 我正在使用庞加莱指数方法 但我无法成功检测到这一点 而且我不明白为什么 First I divide the image in 15x15 blocks then I calculate the x an
  • 检查图像中是否有太薄的区域

    我正在尝试验证雕刻机的黑白图像 更多的是剪贴画图像 不是照片 我需要考虑的主要事情之一是区域的大小 或线条的宽度 因为机器无法处理太细的线条 所以我需要找到比给定阈值更细的区域 以此图为例 竖琴的琴弦可能太细而无法雕刻 我正在阅读有关 Ma
  • uri 警告中缺少端口:使用 Python OpenCV cv2.VideoCapture() 打开文件时出错

    当我尝试流式传输 ipcam 时 出现了如下所示的错误 tcp 000000000048c640 uri 中缺少端口 警告 打开文件时出错 build opencv modules videoio src cap ffmpeg impl h
  • 从包含带边框的表格的图像中提取表格结构

    我正在尝试提取下表中的单元格位置 应用自适应阈值处理后 我能够获得细胞位置周围的轮廓 并且 HoughLines 获得垂直和水平结构元素 这是我的代码 img cv2 imread os path join img path file im
  • opencv人脸检测示例

    当我在设备上运行应用程序时 应用程序崩溃并显示以下按摩 java lang UnsatisfiedLinkError 无法加载 detector based tracker findLibrary 返回 null 我正在使用 OpenCV
  • 如何使用 opencv python 计算乐高积木上的孔数?

    我正在开发我的 python 项目 我需要计算每个乐高积木组件中有多少个孔 我将从输入 json 文件中获取有关需要计算哪个程序集的信息 如下所示 img 001 red 0 blue 2 white 1 grey 1 yellow 1 r
  • iOS 上的 OpenCV - VideoCapture 属性始终返回 1

    我一直在尝试构建一个简单的 OpenCV iOS 应用程序 该应用程序从捆绑包中加载视频并查询其帧数 持续时间等 然后它将尝试从中获取各个帧 不幸的是 当我使用VideoCapture类中 所有属性返回值 1 然后我尝试导航到frame 1
  • 在 Python 中将 OpenCV 帧流式传输为 HTML

    我正在尝试从 opencv Pyt hon 中的 URL 读取视频 然后逐帧处理它 然后将其发送到 HTML 页面 But I am only getting the first frame after that the program g
  • 同时从多个流中捕获、最佳方法以及如何减少 CPU 使用率

    我目前正在编写一个应用程序 该应用程序将捕获大量 RTSP 流 在我的例子中为 12 个 并将其显示在 QT 小部件上 当我超过大约 6 7 个流时 问题就会出现 CPU 使用率激增并且出现明显的卡顿 我认为它不是 QT 绘制函数的原因是因
  • 二值图像中骨架上两点之间的最短路径

    我有一个二进制图像 其中包含图像的一个像素宽度骨架 您可能基本上知道 在这个二值图像中 我在骨架上有 1 在其他地方有 0 如何找到骨架上两个非零元素之间的最短距离 路径也应该在骨架本身上 我想使用 A star 算法的 C 实现 我找到了
  • 将 4 通道图像转换为 3 通道图像

    我正在使用 OpenCV 2 4 6 我正在尝试将 4 通道 RGB IplImage 转换为 4 通道 HSV 图像 下面是我的代码 给出错误 OpenCV 错误 未知函数断言失败 我认为 cvCvtColor 支持 3 通道图像 有没有
  • “没有名为‘cv2’的模块”,但已安装

    我已经安装了包含 opencv 贡献的 whl 文件 因为我想使用 SIFT 算法 我在 conda 环境中使用 pip 安装了它 所以当我在 conda list 中提示时 它会向我显示 opencv python 3 4 5 contr
  • 如何将多行文本插入到框架/图像中

    我使用 C 和 OpenCV 创建了一个框架 并想在其中插入几行文本 使用以下代码 putText frame My text here cvPoint 30 30 FONT HERSHEY COMPLEX SMALL 0 8 cvScal
  • 如何检测图像是否像素化

    之前有人在 SO 上提出过这样的问题 在Python中检测像素化图像 https stackoverflow com questions 12942365 detecting a pixelated image in python还有关于q
  • 使用python从gst管道抓取帧到opencv

    我在用着OpenCV http opencv org 和GStreamer0 10 我使用此管道通过自定义套接字通过 UDP 接收 MPEG ts 数据包sockfd由 python 提供并显示它xvimagesink 而且效果很好 以下命
  • 在骨架图像中查找线 OpenCV python

    我有以下图片 我想找到一些线来进行一些计算 平均长度等 我尝试使用HoughLinesP 但它找不到线 我能怎么做 这是我的代码 sk skeleton mask rows cols sk shape imgOut np zeros row
  • opencv中如何去除二值图像噪声?

    将图像转换为二值图像 黑白 后如果有任何噪音怎么办 我消除了那些不需要的噪音 您可以看到下图的黑色区域内有一些白噪声 我该如何去除噪声 使用opencv http img857 imageshack us img857 999 blackn

随机推荐

  • Open3d之计算源点云与目标云的距离

    核心函数介绍 compute point cloud distance 提供了计算从源点云到目标点云的距离的方法 即 它计算源点云中的每个点到目标点云中最近点的距离 在下面的例子中 展示了使用该函数来计算两点云之间的差值 请注意 此方法也可
  • Shiro反序列化漏洞利用——2、Shiro_exploit漏洞检测

    使用Shiro exploit工具 检查是否存在默认的key 1 Github项目地址 下载利用工具 https github com insightglacier Shiro exploit 2 1使用示例 python shiro ex
  • C语言学习之assert

    C语言学习之assert C语言学习之assert assert 编程术语 编写代码时 我们总是会做出一些假设 断言就是用于在代码中捕捉这些假设 可以将断言看作是异常处理的一种高级形式 断言表示为一些布尔表达式 程序员相信在程序中的某个特定
  • 【C】变量

    目录 变量的命名 局部变量 全局变量 作用域 生命周期 变量的命名 变量名必须是由字母 数字 下划线组成 不能以数字开头 变量名不能是关键字 局部变量 全局变量
  • 斗地主2.0

    案例介绍 按照斗地主的规则 完成洗牌发牌的动作 具体规则 组装54张扑克牌将 54张牌顺序打乱 三个玩家参与游戏 三人交替摸牌 每人17张牌 最后三张留作底牌 查看三人各自手中的牌 按照牌的大小排序 底牌 规则 手中扑克牌从大到小的摆放顺序
  • git 主干master分支回滚到历史版本

    先切换到主分支 然后执行以下两点 1 回滚到指定版本 本地分支回滚到指定版本 git reset hard
  • 【漏洞复现】CVE-2022-44268 ImageMagick任意文件读取漏洞

    启动环境 sudo docker compose up d 查看端口号 服务启动后 访问http your ip 8080可以看到图片上传框 利用这个漏洞 需要先准备一个恶意PNG文件 文件内容中包含我们准备读取的文件路径 可以使用poc
  • 计算机网络--第三章思维导图

  • document.referrer的用法

    在JavaScript中 document对象有很多属性 其中有3个与对网页的请求有关的属性 它们分别是URL domain和referrer URL属性包含页面完整的URL domain属性中只包含页面的域名 而referrer属性中则保
  • 【模型评估与选择】sklearn.model_selection.train_test_split

    1 描述 Split arrays or matrices into random train and test subsets 2 语法 train test split arrays options 3 参数 1 arrays sequ
  • 多版本php安装swoole失败问题

    问题描述 使用命令 pecl安装报错 查看报错提示使用的是低版本的php 问题原因 pecl设置的环境变量指向的路径是低版本的所以如果想使用高版本的php 需要使用全路径命令 解决方法 usr local php7 26 bin pecl
  • Ubuntu 安装elasticsearch集群

    环境准备 准备三台服务器搭建集群环境 node1 192 168 177 171 node2 192 168 177 172 node3 192 168 177 173 其中node1为master节点 node2 node3为slave节
  • 图像分割汇总

    Image Segmentation 图像分割 所谓图像分割是指根据灰度 彩色 空间纹理 几何形状等特征把图像划分成若干个互不相交的区域 使得这些特征在同一区域内表现出一致性或相似性 而在不同区域间表现出明显的不同 简单的说就是在一副图像中
  • Python——遗传算法简介及其在二次分配中的运用(含详细源代码)

    一 遗传算法简介 二 二次分配问题描述 三 Python代码实现 import math import random import matplotlib pyplot as plt def getPermutation n x n为全排列的
  • 集训第一周 Linux

    1 创建一个用户user1 用root身份给user1修改密码为redhat 提示 创建用户用useradd user1 2 切换到user1用户 给自己修改一个密码 密码任意 3 在 root 目录中创建一个以自己的汉语拼音为名字的文件
  • QML学习一:QtCreator编译器主题背景设置

    效果如下 QML学习一 QtCreator编译器主题背景设置 前言 一 工具栏菜单栏背景设置 二 文本编辑区域设置 总结 前言 工欲善其事必先利其器 为了更好地开发代码 我们先将QtCreator界面改为模仿Vs2019主题样式 这样开发起
  • Unity3d中所有特殊的文件夹

    1 Editor Editor文件夹可以在根目录下 也可以在子目录里 只要名子叫Editor就可以 比如目录 xxx xxx Editor 和 Editor 是一样的 无论多少个叫Editor的文件夹都可以 Editor下面放的所有资源文件
  • svn清理本地已经删除的文件,注意事项

    点击项目目录下空白处点击trotoiseSVN后点击检查修改 在里面删除你想要删除的已删除文件即可 分支操作注意事项 在切换分支前记得提交本地代码的修改 否则会合并到切换后的分支去 切记 哎
  • Java使用MongoTemplate实现多条件、模糊查询、排序、范围、分页查询

    场景 查询客户列表 不同条件之间取交集 且的关系 单个条件内取并集 或的关系 实现细节如下 1 全等于 手机号全字匹配 2 模糊查询 客户名称模糊搜索 3 单个条件查询多个字段 客户编号 4 日期范围 近期消费时间 5 数值范围 消费总金额
  • Ubuntu使用haar+adaboost训练进行手势识别

    手势识别开源代码千千万 为啥我要用此方法 原因有三 首先 我们项目要求这个手势识别是不分环境的 也就是半夜三更黑灯瞎火也能用 这一下子就把纯RGB的方式给去除了 而且也要考虑用户戴手套 手套颜色不限制 使用 那么肤色过滤什么的咱们再见 其次