首页 > 编程语言 >利用Python训练手势模型代码

利用Python训练手势模型代码

时间:2024-05-23 20:09:18浏览次数:13  
标签:img Python data 代码 test import pca 手势 sklearn

import cv2 as cv
import os
import numpy as np
from sklearn.decomposition import PCA
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.naive_bayes import MultinomialNB
from sklearn.neural_network import MLPClassifier
from sklearn.ensemble import VotingClassifier
from joblib import dump

# 图像预处理函数
def resize_image(img):
# 调整图像大小为200x200像素
resized_img = cv.resize(img, (200, 200))
# 将图像展平为一维数组
flattened_img = resized_img.reshape(200 * 200)
return flattened_img


def apply_pca(data):

n_dim = 40
pca = PCA(n_components=n_dim)

X_pca = pca.fit_transform(data)
return X_pca


data = []
labels = []

for path, dirs, files in os.walk('./img02'):

label = path.split(os.sep)[-1]
if len(label) > 0:

for file in files:
file_path = os.path.join(path, file)

img = cv.imread(file_path, 0)
if img is not None:

data.append(resize_image(img))

labels.append(label)


data_x = np.array(data)
target_y = np.array(labels)


x_update = apply_pca(data_x)


x_train, x_test, y_train, y_test = train_test_split(data_x, target_y, random_state=42, test_size=0.25)


models = {
"SVM": SVC(C=2.0, max_iter=100),
"Decision Tree": DecisionTreeClassifier(),
"KNN": KNeighborsClassifier(),
"Naive Bayes": MultinomialNB(),
"Neural Network": MLPClassifier(max_iter=200, hidden_layer_sizes=(40, 30, 20, 10)),
"Voting": VotingClassifier(estimators=[
("lw1", SVC(probability=True)),
("lw2", DecisionTreeClassifier()),
("lw3", KNeighborsClassifier()),
("lw4", MultinomialNB())], voting="soft", weights=[1, 1, 1, 1])
}


for name, model in models.items():

model.fit(x_train, y_train)

accuracy = model.score(x_test, y_test)

print(f"{name} 精度: {accuracy}")


for name, model in models.items():

dump(model, f"{name.lower()}.dat")

标签:img,Python,data,代码,test,import,pca,手势,sklearn
From: https://www.cnblogs.com/Gaze/p/18209227

相关文章

  • GitHub——源代码管理工具
    一、简介GitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub。GitHub提供了分布式版本控制和源代码管理(SCM)功能,它是基于Git的,由GitHub公司开发和维护。它不仅提供了代码托管服务,还提供了一个平台,让开发者可以交流、学习和协作。......
  • python 基础习题3--数据类型和运算符
    1.  100/4+2*3 运行结果是 ()                    A、10B、81C、31D、50    E、31.02. Python 中的== 代表的是 (  )A、把左边的值赋值给右边;B、把右边的值赋值给左边 ;C、比较左右......
  • python计算雨水含量(W)
     数据: #!usr/bin/envpython#-*-coding:utf-8-*-"""@author:Suyue@file:raincontent.py@time:2024/05/23@desc:"""importnumpyasnpimportpandasaspdimportxlwtimportmathdf1=pd.read_excel('20240510五原数浓......
  • 企业源代码泄露?这几招教你如何避免这场灾难
    网络时代下的企业机密:如何防范源代码泄露风险在数字化的网络时代,企业机密尤其是源代码的安全保护,已成为软件开发企业关注的焦点。源代码不仅是企业的核心竞争力,更是创新成果的体现。一旦源代码泄露,不仅会造成巨大的经济损失,还会使企业在激烈的市场竞争中处于不利地位。因此,如何有......
  • python DataFrame之MultiIndex 的使用
    importpandasaspdimportpprintasp#嵌套列表arrays=[['a','a','b','b'],[1,2,1,2]]#创建MultiIndexindex=pd.MultiIndex.from_arrays(arrays,names=('letter','number'))#使用MultiInd......
  • 源代码安全:华企盾DSC防泄密系统在软件开发企业中的应用
    在软件开发行业中,源代码的安全是企业最宝贵的资产之一。源代码的泄露不仅会导致企业损失巨大的经济利益,还可能危及到企业的市场竞争力。因此,保护源代码的安全成为了软件开发企业的重要任务。华企盾DSC系统作为一套先进的数据安全防泄密解决方案,在保障源代码安全方面发挥着至关重要......
  • [Python] pipe模块
    一.概述我们都知道在Linux下执行命令ls|sort-r会将排序后的结果进行输出,它是先获取目录数据,管道符|将ls的输出作为后一个命令的输入,最终得到反向排序的结果。Python和其他大多数语言一样,处理数据的时候通常是将数据作为参数传入。但是有没有像Linux管道符那样优雅的输出呢?有......
  • 买卖股票相关算法-动态规划-python
    要求1:给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不......
  • Pairwise实现(Python篇)
    开篇:测试过程中,对于多参数参数多值的情况进行测试用例组织,之前一直使用【正交分析法】进行用例组织,说白了就是把每个参数的所有值分别和其他参数的值做一个全量组合,用Python脚本实现,就是itertools模块中product方法(又称笛卡尔积法)。组合生成器,例:importitertoolsa=(......
  • Win11 Linux子系统安装失败错误代码0x800701bc解决方法
    Win11Linux子系统安装失败错误代码0x800701bc解决方法 报错提示:Installing,thismaytakeafewminutes…WslRegisterDistributionfailedwitherror:0x800701bcError:0x800701bcWSL2???https://aka.ms/wsl2kernelPressanykeytocontinue… 处理方法......