基于opencv + cnn + PIL的手势识别系统

这篇具有很好参考价值的文章主要介绍了基于opencv + cnn + PIL的手势识别系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

涉及技术栈:opencv + cnn + PIL

基于opencv + cnn + PIL的手势识别系统,opencv,cnn,人工智能,手势识别

网络训练算法流程(training.py)

  1. 图像读取及预处理

本实验采用PLL库里的open函数完成图片的读取工作,用resize函数将图像的尺寸变为统一值。为减少卷积操作的计算量,将图像做归一化处理,将图像的像素值变为[0,1]之间。

基于opencv + cnn + PIL的手势识别系统,opencv,cnn,人工智能,手势识别

2,编码标签

将训练集和测试集的标签转为独热码。

基于opencv + cnn + PIL的手势识别系统,opencv,cnn,人工智能,手势识别

3.构建卷积神经网络

基于opencv + cnn + PIL的手势识别系统,opencv,cnn,人工智能,手势识别

4.配置和训练网络

搭建完网络后,设置损失函数,优化器和评价指标。配置网络训练参数,包括训练集和测试集,训练轮数等参数,接着开始训练网络。调整网络训练参数,使网络收敛达到比较好的效果。

基于opencv + cnn + PIL的手势识别系统,opencv,cnn,人工智能,手势识别

打印出的模型的具体结构:

基于opencv + cnn + PIL的手势识别系统,opencv,cnn,人工智能,手势识别

训练损失图:

基于opencv + cnn + PIL的手势识别系统,opencv,cnn,人工智能,手势识别

基于opencv + cnn + PIL的手势识别系统,opencv,cnn,人工智能,手势识别

5.评价模型

混淆矩阵是表示精度评价的一种标准格式,用n行n列的矩阵形式来表示。混淆矩阵的每一列代表了预测类别,每一列的总数表示预测为该类别的数据的数目;每一行代表了数据的真实归属类别,每一行的数据总数表示该类别的数据实例的数目。混淆矩阵对角线上的数值越大,说明预测为真的数目越多,分类效果越好。

基于opencv + cnn + PIL的手势识别系统,opencv,cnn,人工智能,手势识别

模型测试(predict.py)测试图片

from tensorflow.keras.models import load_model

# import matplotlib.image as processimage

# import matplotlib as plt

import numpy as np

from PIL import Image

import os

model = load_model('Gesture_2.h5')

Gesturetype = ['666', 'yech', 'stop', 'punch', 'OK']

# Gesturetype = ['666', 'stop', 'yech', 'ok', 'one']

path = 'test\\'

file_count = 0

for file in os.listdir(path):

    list = []

    img = Image.open(path + file)

    test = file.split('_')[0]

    table = file.split('_')[1][0]

    img = np.array(img).reshape(-1, 100, 100, 1) / 255

    prediction = model.predict(img)

    print(prediction)

    final_prediction = [result.argmax() for result in prediction][0]

    print(final_prediction)

    ges_type = Gesturetype[final_prediction]

print(ges_type)

模型测试(录制视频.py)测试视频

import cv2

import numpy as np

from tensorflow.keras.models import load_model

from training import Training

import os

from tensorflow.keras import backend

import time

import random

class Gesture():

    def __init__(self, train_path, predict_path, gesture, train_model):

        self.blurValue = 5

        self.bgSubThreshold = 36

        self.train_path = train_path

        self.predict_path = predict_path

        self.threshold = 60

        self.gesture = gesture

        self.train_model = train_model

        self.skinkernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5))

        self.x1 = 380

        self.y1 = 60

        self.x2 = 640

        self.y2 = 350

    def collect_gesture(self, capture, ges, photo_num):

        photo_num = photo_num

        vedeo = False

        predict = False

        count = 0

        # 读取默认摄像头

        cap = cv2.VideoCapture(capture)

        # 设置捕捉模式

        cap.set(10, 200)

        # 背景减法创建及初始化

        bgModel = cv2.createBackgroundSubtractorMOG2(0, self.bgSubThreshold)

        while True:

            # 读取视频帧

            ret, frame = cap.read()

            # 镜像转换

            frame = cv2.flip(frame, 1)

            # cv2.imshow('Original', frame)

            # 双边滤波

            frame = cv2.bilateralFilter(frame, 5, 50,100)

            # 绘制矩形,第一个为左上角坐标(x,y),第二个为右下角坐标

            # rec = cv2.rectangle(frame, (220, 50), (450, 300), (255, 0, 0), 2)

            rec = cv2.rectangle(frame, (self.x1, self.y1), (self.x2, self.y2), (255, 0, 0), 2)

            # 定义roi区域,第一个为y的取值,第2个为x的取值

            # frame = frame[50:300, 220:450]

            frame = frame[self.y1:self.y2, self.x1:self.x2]

            # cv2.imshow('bilateralFilter', frame)

            # 背景减法运动检测

            bg = bgModel.apply(frame, learningRate=0)

            # 显示背景减法的窗口

            # cv2.imshow('bg', bg)

            # 图像边缘处理--腐蚀

            fgmask = cv2.erode(bg, self.skinkernel, iterations=1)

            # 显示边缘处理后的图像

            # cv2.imshow('erode', fgmask)

            # 将原始图像与背景减法+腐蚀处理后的蒙版做"与"操作

            bitwise_and = cv2.bitwise_and(frame, frame, mask=fgmask)

            # 显示与操作后的图像

            # cv2.imshow('bitwise_and', bitwise_and)

            # 灰度处理

            gray = cv2.cvtColor(bitwise_and, cv2.COLOR_BGR2GRAY)

            # 高斯滤波

            blur = cv2.GaussianBlur(gray, (self.blurValue, self.blurValue), 2)

            # cv2.imshow('GaussianBlur', blur)

【计算机毕设之基于CNN+opencv的手势识别系统】 https://www.bilibili.com/video/BV1nB4y1U7m8/?share_source=copy_web&vd_source=3d18b0a7b9486f50fe7f4dea4c24e2a4

http://www.bilibili.com/video/BV1nB4y1U7m8/?share_source=copy_web&vd_source=3d18b0a7b9486f50fe7f4dea4c24e2a4

          文章来源地址https://www.toymoban.com/news/detail-760934.html

到了这里,关于基于opencv + cnn + PIL的手势识别系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 毕业设计-基于机器视觉的手势识别系统-OPENCV

    目录 前言 课题背景和意义 实现技术思路 一、系统总体设计 二、手势区域特征提取 三、系统设计与实现 四、总结 实现效果图样例 最后     📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年

    2024年02月08日
    浏览(68)
  • 计算机毕设 深度学习手势识别 - yolo python opencv cnn 机器视觉

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月14日
    浏览(67)
  • 基于Python+OpenCV的手势识别系统:智能家居和智能小车的灯光控制

    基于python+opencv的手势识别系统,可控制灯的亮度,智能家居,智能小车。 基于python+opencv的手势识别系统软件。 内含svm模型,和肤色识别,锐化处理。 基于 win10+Python3.7的环境,利用Python的OpenCV、Sklearn和PyQt5等库搭建了一个较为完整的手势识别系统,用于识别日常生活中1-1

    2024年04月15日
    浏览(55)
  • 毕业设计:基于深度学习的图像分类识别系统 人工智能

    目录 前言 项目背景 数据集 设计思路 自注意力 网络模型 实验环境 实验结果分析 更多帮助     📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课

    2024年04月16日
    浏览(102)
  • AI人工智能课题:图像识别地标识别系统的设计与实现(基于百度智能云AI接口)

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、

    2024年02月04日
    浏览(66)
  • AI人工智能课题:图像识别货币识别系统的设计与实现(基于百度智能云AI接口)

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、

    2024年02月04日
    浏览(69)
  • AI人工智能课题:图像识别红酒识别系统的设计与实现(基于百度智能云AI接口)

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、

    2024年02月04日
    浏览(63)
  • AI人工智能课题:图像识别菜品识别系统的设计与实现(基于百度智能云AI接口)

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、

    2024年02月03日
    浏览(54)
  • 毕业设计:基于深度学习的摄像头人脸识别系统 人工智能

    目录 前言 课题背景和意义 实现技术思路 一、算法理论基础 1.1 人脸检测技术 1.2 活体检测技术 二、 数据集 2.1 数据集 2.2 数据扩充 三、实验及结果分析 3.1 实验环境搭建 3.2 模型训练 最后     📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就

    2024年04月27日
    浏览(59)
  • 人工智能课程设计毕业设计——基于机器学习的手写汉字识别系统

    《机器学习》课程设计实验 报告 题目:基于深度学习的手写汉字识别系统 目录 基于深度学习的手写汉字识别系统实验报告 1. 绪论 ............................................................................................................................................................ 1 1.1 研究背景及意义..

    2024年02月20日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包