当前位置: 首页 > news >正文

基于米尔全志T527开发板的OpenCV进行手势识别方案

本文将介绍基于米尔电子MYD-LT527开发板(米尔基于全志T527开发板)的OpenCV手势识别方案测试。


摘自优秀创作者-小火苗

米尔基于全志T527开发板

一、软件环境安装

1.安装OpenCV

sudo apt-get install libopencv-dev python3-opencv

2.安装pip

sudo apt-get install python3-pip

二、OpenCV手势识别步骤

​1.图像获取:从摄像头或其他图像源获取手部图像。使用OpenCV的VideoCapture类可以捕获视频流,或者使用imread函数加载图像。

2.图像预处理:对图像进行预处理,以提高特征提取的准确性。常用的预处理操作包括灰度化、滤波、边缘检测、二值化、噪声去除和形态学处理等。

  • 灰度化:将彩色图像转换为灰度图像,去除颜色信息,简化图像。

  • 滤波:使用滤波器去除图像中的噪声。

  • 边缘检测:使用边缘检测算法提取图像中的边缘信息。

  • 二值化:将灰度图像转换为二值图像,将像素值分为黑色和白色。

  • 形态学处理:使用形态学操作增强手势轮廓。

3.特征提取:从预处理后的图像中提取手部特征。常用的特征包括形状特征、纹理特征和运动轨迹特征等。

  • 形状特征:提取手部轮廓、面积、周长、质心等形状特征。

  • 纹理特征:提取手部皮肤纹理、皱纹等纹理特征。

  • 运动轨迹特征:提取手部运动轨迹、速度、加速度等运动轨迹特征。

4.分类和识别:使用机器学习算法对提取的特征进行分类,以识别特定的手势。

三、代码实现

# -*- coding: utf-8 -*-
import cv2
def reg(x):
o1 = cv2.imread('paper.jpg',1)
o2 = cv2.imread('rock.jpg',1)
o3 = cv2.imread('scissors.jpg',1)  
gray1 = cv2.cvtColor(o1,cv2.COLOR_BGR2GRAY)
gray2 = cv2.cvtColor(o2,cv2.COLOR_BGR2GRAY)
gray3 = cv2.cvtColor(o3,cv2.COLOR_BGR2GRAY)
xgray = cv2.cvtColor(x,cv2.COLOR_BGR2GRAY)
ret, binary1 = cv2.threshold(gray1,127,255,cv2.THRESH_BINARY)
ret, binary2 = cv2.threshold(gray2,127,255,cv2.THRESH_BINARY)
ret, binary3 = cv2.threshold(gray3,127,255,cv2.THRESH_BINARY)
xret, xbinary = cv2.threshold(xgray,127,255,cv2.THRESH_BINARY)
contours1, hierarchy = cv2.findContours(binary1,
cv2.RETR_LIST,
cv2.CHAIN_APPROX_SIMPLE)  
contours2, hierarchy = cv2.findContours(binary2,
cv2.RETR_LIST,
cv2.CHAIN_APPROX_SIMPLE)  
contours3, hierarchy = cv2.findContours(binary3,
cv2.RETR_LIST,
cv2.CHAIN_APPROX_SIMPLE)  
xcontours, hierarchy = cv2.findContours(xbinary,
cv2.RETR_LIST,
cv2.CHAIN_APPROX_SIMPLE)  
cnt1 = contours1[0]
cnt2 = contours2[0]
cnt3 = contours3[0]
x = xcontours[0]
ret=[]
ret.append(cv2.matchShapes(x,cnt1,1,0.0))
ret.append(cv2.matchShapes(x,cnt2,1,0.0))
ret.append(cv2.matchShapes(x,cnt3,1,0.0))
max_index = ret.index(min(ret))  #计算最大值索引
if max_index==0:
r="paper"
elif max_index==1:
r="rock"
else:
r="sessiors"
return r
t1=cv2.imread('test1.jpg',1)
t2=cv2.imread('test2.jpg',1)
t3=cv2.imread('test3.jpg',1)
# print(reg(t1))
# print(reg(t2))
# print(reg(t3))
# ===========显示处理结果==================
org=(0,60)
font = cv2.FONT_HERSHEY_SIMPLEX
fontScale=2
color=(255,255,255)
thickness=3
cv2.putText(t1,reg(t1),org,font,fontScale,color,thickness)
cv2.putText(t2,reg(t2),org,font,fontScale,color,thickness)
cv2.putText(t3,reg(t3),org,font,fontScale,color,thickness)
cv2.imshow('test1',t1)
cv2.imshow('test2',t2)
cv2.imshow('test3',t3)
cv2.waitKey()
cv2.destroyAllWindows()

四、实践

1.程序运行

2、原始图像包含训练图像

3.识别结果

识别到了 剪刀 石头 布

原始图片

相关文章:

基于米尔全志T527开发板的OpenCV进行手势识别方案

本文将介绍基于米尔电子MYD-LT527开发板(米尔基于全志T527开发板)的OpenCV手势识别方案测试。 摘自优秀创作者-小火苗 米尔基于全志T527开发板 一、软件环境安装 1.安装OpenCV sudo apt-get install libopencv-dev python3-opencv 2.安装pip sudo apt…...

Htpp中web通讯发送post(上传文件)、get请求

一、正常发送post请求 1、引入pom文件 <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5</version></dependency>2、这个是发送至正常的post、get请求 import org…...

【论文阅读笔记】HunyuanVideo: A Systematic Framework For Large Video Generative Models

HunyuanVideo: A Systematic Framework For Large Video Generative Models 前言引言Overview数据预处理数据过滤数据注释 模型架构设计3D Variational Auto-encoder Designtraininginference 统一的图像和视频生成架构Text encoderModel ScalingImage model scaling lawvideo …...

SpringBoot的事务钩子函数

如果需要在A方法执行完成之后做一个不影响主方法运行的动作B&#xff0c;我们需要判断这个A方法是否存在事务&#xff0c;并且使用异步执行动作B&#xff1b; import org.springframework.transaction.support.TransactionSynchronization; import org.springframework.transa…...

源码安装PHP-7.2.19

源码安装PHP-7.2.19 1.解压 tar -xjvf php-7.2.19.tar.bz2.编译 -prefix安装路径 cd php-7.2.19 ./configure --prefix/home/work/study 成功输出 3.make(构建) makemake testmake installlinux对php操作的一些命令 # 进入到php [rootvdb1 study]# cd php/ [rootvdb1 st…...

UE5制作伤害浮动数字

效果演示&#xff1a; 首先创建一个控件UI 添加画布和文本 文本设置样式 添加伤害浮动动画&#xff0c;根据自己喜好调整&#xff0c;我设置了缩放和不透明度 添加绑定 转到事件图表&#xff0c;事件构造设置动画 创建actor蓝图类 添加widget 获取位置 设置位移 创建一个被击中…...

学习日志024--opencv中处理轮廓的函数

目录 前言​​​​​​​ 一、 梯度处理的sobel算子函数 功能 参数 返回值 代码演示 二、梯度处理拉普拉斯算子 功能 参数 返回值 代码演示 三、Canny算子 功能 参数 返回值 代码演示 四、findContours函数与drawContours函数 功能 参数 返回值 代码演示 …...

(2024年最新)Linux(Ubuntu) 中配置静态IP(包含解决每次重启后配置文件失效问题)

Hello! 亲爱的小伙伴们&#xff0c;大家好呀&#xff08;Smile~&#xff09;&#xff01;我是Huazzi&#xff0c;欢迎观看本篇博客&#xff0c;接下来让我们一起来学习一下Ubuntu 中如何配置静态IP吧&#xff01;祝你有所收获&#xff01; 提前对Linux有所了解的小伙伴应该知道…...

DPDK用户态协议栈-TCP Posix API 2

tcp posix api send发送 ssize_t nsend(int sockfd, const void *buf, size_t len, __attribute__((unused))int flags) {ssize_t length 0;void* hostinfo get_host_fromfd(sockfd);if (hostinfo NULL) {return -1;}struct ln_tcp_stream* stream (struct ln_tcp_stream…...

[IT项目管理]项目时间管理(本章节3w字爆肝)

七.项目时间管理 7.1 项目进度的重要性 为什么要重视项目进度&#xff1a;在项目进行的过程之中会遇到变故。但是不论项目中发生了什么&#xff0c;时间总是在流逝&#xff0c;就可能会导致项目不可以在规定的时间完成。 7.2可能影响项目进度的因素 有员工离职个人的工作方…...

【python因果库实战5】使用银行营销数据集研究营销决策的效果5

目录 接触次数的效应 重新定义治疗变量和潜在混杂因素 更深入地审视干预情景 逆概率加权 标准化 总结及与非因果分析的比较 接触次数的效应 我们现在转而研究当前营销活动中接触次数的数量&#xff08;campaign&#xff09;对积极结果发生率的影响。具体来说&#xff0c;…...

【Qt】QWidget中的常见属性及其功能(二)

目录 六、windowOpacity 例子&#xff1a; 七、cursor 例子&#xff1a; 八、font 九、toolTip 例子&#xff1a; 十、focusPolicy 例子&#xff1a; 十一、styleSheet 计算机中的颜色表示 例子&#xff1a; 六、windowOpacity opacity是不透明度的意思。 用于设…...

9 OOM和JVM退出。OOM后JVM一定会退出吗?

首先我们把两个概念讲清楚 OOM是线程在申请堆内存&#xff0c;发现堆内存空间不足时候抛出的异常。 JVM退出的条件如下&#xff1a; java虚拟机在没有守护线程的时候会退出。守护线程是启动JVM的线程&#xff0c;服务于用户线程。 我们简单说下守护线程的功能: 1.日志的记录…...

学习笔记070——Java中【泛型】和【枚举】

文章目录 1、泛型1.1、为什么要使用泛型&#xff1f;1.2、泛型的应用1.3、泛型通配符1.4、泛型上限和下限1.5、泛型接口 2、枚举 1、泛型 Generics 是指在定义类的时候不指定类中某个信息&#xff08;属性/方法返回值&#xff09;的具体数据类型&#xff0c;而是用一个标识符来…...

【工具变量】碳排放市场交易数据(2013-2023年)

一、时间范围&#xff1a;2013年8月5日到2023年1月13日 二、具体指标&#xff1a; 交易日期 城市名称 交易品种 开盘价 最高价 最低价 成交均价 收盘价 前收盘价 涨跌幅 总成交量 总成交额 …...

【视频生成模型】——Hunyuan-video 论文及代码讲解和实操

&#x1f52e;混元文生视频官网 | &#x1f31f;Github代码仓库 | &#x1f3ac; Demo 体验 | &#x1f4dd;技术报告 | &#x1f60d;Hugging Face 文章目录 论文详解基础介绍数据预处理 &#xff08;Data Pre-processing&#xff09;数据过滤 (Data Filtering)数据标注 (Data…...

基线检查:Windows安全基线.【手动 || 自动】

基线定义 基线通常指配置和管理系统的详细描述&#xff0c;或者说是最低的安全要求&#xff0c;它包括服务和应用程序设置、操作系统组件的配置、权限和权利分配、管理规则等。 基线检查内容 主要包括账号配置安全、口令配置安全、授权配置、日志配置、IP通信配置等方面内容&…...

uniapp跨端适配—条件编译

在uniapp中&#xff0c;跨端适配是通过条件编译实现的。条件编译允许开发者根据不同的平台&#xff08;如iOS、Android、微信小程序、百度小程序等&#xff09;编写不同的代码。这样可以确保每个平台上的应用都能得到最优的性能和用户体验。 以下是uniapp中条件编译的基本语法…...

【Java基础面试题013】Java中静态方法和实例方法的区别是是么?

回答重点 静态方法 使用static关键字修修饰的方法属于类随着类的加载而加载&#xff0c;随着类的卸载而消失可以通过类名直接调用&#xff0c;也可以通过对象调用&#xff0c;但是这种方式不推荐&#xff0c;会混淆意义&#xff0c;也不利于后期维护与扩展 class Example {st…...

C语言入门(一):A + B _ 基础输入输出

前言 本专栏记录C语言入门100例&#xff0c;这是第&#xff08;一&#xff09;例。 目录 一、【例题1】 1、题目描述 2、代码详解 二、【例题2】 1、题目描述 2、代码详解 三、【例题3】 1、题目描述 2、代码详解 四、【例题4】 1、题目描述 2、代码详解 一、【例…...

Vue日历组件FullCalendar使用方法

FullCalendar &#xff08;全日历&#xff09;Vue组件的使用 FullCalendar官方文档地址 FullCalendar日历组件支持Vue React Angular Javascript Vue2的框架示例&#xff1a; npm install --save fullcalendar/core fullcalendar/vue<template><div class"cal…...

TinyML在OBD-II边缘设备上燃油类型分类的实现与优化

论文标题&#xff1a;TinyML Implementation and Optimization for Fuel Type Classification on OBD-II Edge Device&#xff08;TinyML在OBD-II边缘设备上燃油类型分类的实现与优化&#xff09; 作者信息&#xff1a;Miguel Amaral, Morsinaldo Medeiros, Matheus Andrade, …...

vue3 中 defineProps 声明示例

1、直接声明 // 1、直接使用 defineProps(["tableData", "acceptType"]); 2、运行时声明方式不使用TypeScript类型注解&#xff0c;而是使用JavaScript对象&#xff0c;使用 type 来定义props // 2、运行时声明方式不使用TypeScript类型注解&#xff0c;…...

SpringBoot整合MybatisPlus报错Bean不存在:NoSuchBeanDefinitionException

报错信息&#xff1a; Exception in thread “main” org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type ‘com.feng.mybatisplusdemo.dao.UserMapper’ available 解决办法&#xff1a; 将原来引入的MybatisPlus依赖&#xff1a…...

异步电机的控制是否还有研究的必要,是不是已经非常成熟了?

随着工业现代化和自动化进程的加快&#xff0c;异步电机作为最为常见的电动机之一&#xff0c;广泛应用于各类机械设备和工业自动化系统中。异步电机因其结构简单、成本低廉、维护方便等优点而备受青睐。 异步电机的基本原理与应用 异步电机&#xff0c;又称感应电机&#xf…...

【Android】解决 ADB 中 SELinux 设置与 `Failed transaction (2147483646)` 错误

解决 ADB 中 SELinux 设置与 Failed transaction (2147483646) 错误 在使用 ADB 进行开发和调试时&#xff0c;经常会遇到由于 Android 系统安全策略&#xff08;SELinux&#xff09;引起的权限问题&#xff0c;尤其是在执行某些操作时&#xff0c;可能会遇到类似 cmd: Failur…...

企业车辆管理系统(源码+数据库+报告)

一、项目介绍 352.基于SpringBoot的企业车辆管理系统&#xff0c;系统包含两种角色&#xff1a;管理员、用户,系统分为前台和后台两大模块 二、项目技术 编程语言&#xff1a;Java 数据库&#xff1a;MySQL 项目管理工具&#xff1a;Maven 前端技术&#xff1a;Vue 后端技术&a…...

SAP RESTful架构和OData协议

一、RESTful架构 RESTful 架构&#xff08;Representational State Transfer&#xff09;是一种软件架构风格&#xff0c;专门用于构建基于网络的分布式系统&#xff0c;尤其是在 Web 服务中。它通过利用 HTTP 协议和一组简单的操作&#xff08;如 GET、POST、PUT、DELETE&…...

centOS定时任务-cron服务

最近在训练模型的过程中&#xff0c;经常会因为内存爆炸而停止模型训练过程&#xff0c;而且因为内存占满停止的训练进程甚至都没有任何的报错提示。 1、需要减少num_worker的数量&#xff0c;降低需要占用内存的数据数量 2、可以通过free -h监控内存的占用情况 3、可以通过lin…...

Python毕业设计选题:基于django+vue的宠物服务管理系统

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 管理员登录 管理员功能界面 用户管理 宠物商品管理 医疗服务管理 美容服务管理 系统…...