毕业设计

毕业设计 · 圈子

5541 位酷友已加入

本圈子收集理工类毕业设计与毕业论文,本科、硕士、博士各阶段的都可以,上传时请尽量注明毕设的概述信息~加入圈子可以上传、下载资料,也可以使用提问来寻求资料或分享你认为有价值的站外链接~

关注推荐最新

热门标签

资源

【项目】深层文本匹配

深层文本匹配 项目模型 环境准备 运行 运行一般深度神经网络模型 运行 bert 系列模型 使用自己的数据训练 将自己的数据集处理成 header 为 sentence1,sentence2,label 三个字段的csv文件,如下图所示: 将数据分为 train.cav,dev.csv ,test.csv 放入 ./input 文件夹中。 自己重写数据预处理脚本 设置参数 在train.py脚本里的相应位置设置相应模型的参数。 实验结果分析 毫无疑问 bert 系列模型的效果最好,由于我的电脑不允许我使用较大的batchsize进行训练,因此上文表格中报道的准确率不是最佳准确率,如果加大batchsize 应该能提升效果的;另外使用 rnn 做encode 的模型效果明显好于使用cnn 做 encode 的模型。 文本匹配模型一般分为表示型和交互型模型,为了下文方便描述,我将文本匹配模型的框架分为三个层,分别是 Embedding 层,Encoding 层(在交互型模型里,该层还包含匹配层), Prediction 层如下所示: Encoding 层参数共享与不共享 由于模型需要对输入的左右两个句子进行建模,因此需要编码器分别对两个句子进行编码,我们可以选择是否共享左右编码器的参数,下面两段代码分别表示不共享与共享的写法。 不共享参数的情况其实就是分别初始化两个双向LSTM网络,然后分别对左右两个句子进行编码;而共享参数是只初始化一个双向LSTM网络,然后左右句子都使用它来编码。在计算文本相似度这个任务时,从实验中发现共享参数的编码对模型更有帮助,比如 mvlstm和 bimpm 两个模型共享Encoding 层参数比不共享参数准确率要高 7-8个百分点,这两个模型都是使用 rnn 网络做编码器的;而使用cnn 网络做编码器的 arcii 模型共享参数后比不共享参数准确率高2个百分点左右。 深度神经网络模型并不是网络层数越多效果越好 在深度学习领域其实有个经验,就是只要把网络做深效果就会更好,这也许有一定道理,但是面对不同数据,我们应该多尝试。在 arcii 模型中 3 个 cnn block(如下图的 more 2D convolution & pooling 结构)比 2 个 cnn block的模型效果要差一些(0.7734 -> 0.7684)。 产生这个结果的原因可能是所用数据集的句子基本是短句子,语句结构也不复杂的缘故。其实可以看到准确率差的也不多,但是使用 rnn 做 encode的模型在增加深度后效果将会差的更多。 如下图所示的 drcn 模型,原文中使用 4 个 Nx 模块,每个Nx 包含 5 层 LSTM,总共20 层 LSTM的网络,但是在我的实验中我发现在每个 Nx 里面只能用两层LSTM,且只能用 1个 Nx,如果再多效果反而会不好。 另外该模型虽然花里花俏的,但是效果并没有更朴素 bimpm 和 mvlstm 模型要好。也许是我用了 BatchNormalization 做层归一化的缘故(MatchZoo 中使用的 Dropout),但是不用 BN 的话训练时将会造成梯度爆炸。 match_pyramid 和 arcii 模型 这两个模型都是使用2D convolution 做编码器提取特征的,但是为什么match_pyramid 效果这么差呢?将match_pyramid模型的结构和arcii对比一下: 可以看到,match_pyramid直接用左右两个句子的embedding进行匹配交互,然后用 2D convolution 提取特征,这显然匹配层的好坏直接取决于 embedding的好坏;而arcii 首先使用了一层 1D convolution 对embedding进行编码,再进行匹配计算的。所以其实 match_pyramid 模型等于就是 arcii 模型的阉割版(少一层关键的 1D convolution)。 来源https://github.com/wangle1218/deep_text_matching

资源

基于Spark的电影推荐系统

基于Spark的电影推荐系统 本次项目是基于大数据过滤引擎的电影推荐系统--“懂你”电影网站,包含了爬虫、电影网站(前端和后端)、后台管理系统以及推荐系统(Spark)。 一、python 开发环境:pycharm + python3.6 软件架构:mysql + scrapy 运行环境:本次爬取的内容在外网,所以需先翻墙后才能成功运行。 项目架构: 二、电影网站 开发环境:IntelliJ IDEA + maven + git + linux + powerdesigner 软件架构:mysql + mybatis + spring + springmvc 项目描述:懂你电影推荐网站是一个基于SSM框架的web项目,类似当前比较流行的豆瓣。用户可以在网站上浏览电影信息和查询电影,并且网站会根据用户的浏览记录给用户进行实时的电影推荐。 项目架构: 三、后台管理系统 开发环境:IntelliJ IDEA + maven + git + linux + powerdesigner 软件架构:mysql + mybatis + spring + springmvc + easyui 项目描述: 后台管理系统主要对用户信息和电影信息进行管理,如添加删除电影信息和完成用户信息的完善。其中为了更好地保存电影的图片信息,搭建了图片服务器。后台系统也布置在服务器上,感兴趣的朋友可以通过地址 http://115.159.204.68:8080/访问,为大家提供的测试账号为 test,密码为88888888。 项目架构: 四、推荐系统(Spark) 开发环境:IntelliJ IDEA + maven + git + linux 软件架构:hadoop + zookeeper + flume + kafka + nginx + spark + hive + mysql 项目描述: 通过在电影网站系统埋点,获取到用户的点击事件(如用户喜欢哪部电影或对某部电影的评分)并将信息传至推荐系统,推荐系统根据该信息做出相应的处理,将推荐结果存入到mysql数据库中,web前端通过查询数据库将推荐的电影展示给用户。推荐流程如下: 项目架构: 具体步骤: 1.服务器规划(linux镜像为centos6): spark1(ip 192.168.13.134),分配8G内存,4核 spark2(ip 192.168.13.135),分配6G内存,4核 spark3(ip 192.168.13.136),分配6G内存,4核 2.电影数据集,地址: 本次下载的为1m大小的数据集 3.环境的搭建: 1)hdfs搭建 spark1上搭建namenode,secondary namenode,datanode spark2上搭建datanode spark3上搭建datanode 2)yarn搭建 spark1上搭建resourcemanager,nodemanager spark2上搭建nodemanager spark3上搭建nodemanager 3)mysql搭建,在spark2上搭建 4)hive搭建,在spark1上搭建 5)spark集群搭建,搭建standalone模式,spark1为master,其他为worker 4.数据的清洗: (上传数据至hdfs中,hdfs操作) 1)启动 hdfs: [root@spark1 ~]# start-dfs.sh 2)启动 yarn: [root@spark1 ~]# start-yarn.sh 3)启动 mysql: [root@spark2 ~]# service mysqld start 4)启动 hive: [root@spark1 ~]# hive --service metastore 5)启动 spark集群: [root@spark1 spark-1.6.1]# ./sbin/start-all.sh 6)代码(com.zxl.datacleaner.ETL)打包上传(spark-sql与hive集成) 代码位于package com.zxl.datacleaner.ETL,打包为 ETL.jar 运行代码spark-submit --class com.zxl.datacleaner.ETL --total-executor-cores 2 --executor-memory 2g lib/ETL.jar 成功于hive中建表 5.数据的加工, 根据ALS算法对数据建立模型(ALS论文) 1)启动 hdfs: [root@spark1 ~]# start-dfs.sh 2)启动 yarn: [root@spark1 ~]# start-yarn.sh 3)启动 mysql:[root@spark2 ~]# service mysqld start 4)启动 hive: [root@spark1 ~]# hive --service metastore 5)启动 spark集群:[root@spark1 spark-1.6.1]# ./sbin/start-all.sh 6)代码(com.zxl.datacleaner.RatingData)打包上传,测试建立模型 6.建立模型,根据RMSE(均方根误差)选取较好的模型 1)启动上述的服务 2)代码(com.zxl.ml.ModelTraining)打包上传,建立模型 注:com.zxl.ml.ModelTraining2中代码训练单个模型,其中参数 rank=50, iteration = 10, lambda = 0.01 代码位于package com.zxl.ml.ModelTraining,打包为 Spark_Movie.jar 运行代码spark-submit --class com.zxl.ml.ModelTraining lib/Spark_Movie.jar 7.产生推荐结果 1)启动上述的服务 2)代码(com.zxl.ml.Recommender)打包上传,产生推荐结果 8.数据入库, 存储为所有用户推荐的电影结果,mysql中存入的格式为(userid, movieid,rating) 1)启动上述的服务 2)代码(com.zxl.ml.RecommendForAllUsers)打包上传,数据入库 运行代码spark-submit --class com.zxl.ml.RecommendForAllUsers --jars lib/mysql-connector-java-5.1.35-bin.jar lib/Spark_Movie.jar 9.实时数据的发送 1)安装nginx,用来接收电影网站上用户的点击信息,写入本地文件 2)安装flume,实时监控本地文件,将数据发送至kafka消息队列中 10.实时数据的接收处理 ,如果打包到服务器运行错误,也可在本地IDEA上运行 1)安装zookeeper 2)安装kafka,用来接收发送数据 3)启动上述的服务 4)启动zookeeper:[root@spark1 soft]# zkServer.sh start 4)启动flume:[root@spark1 flume]# bin/flume-ng agent -c ./conf/ -f conf/flume-conf.properties -Dflume.root.logger=DEBUG,console -n a1 5)启动kafka:[root@spark1 kafka_2.11-0.10.1.0]# bin/kafka-server-start.sh config/server.properties 6)代码(com.zxl.datacleaner.PopularMovies2)运行,用于为没有登录或新用户推荐,默认推荐观看最多的5部电影 7)代码运行(需指定jar包 kafka-clients-0.10.1.0.jar) spark-submit --class com.zxl.streaming.SparkDrStreamALS --total-executor-cores 2 --executor-memory 1g --jars lib/kafka-clients-0.10.1.0.jar lib/Spark_Movie.jar 转载自https://github.com/LuckyZXL2016/Movie_Recommend

资源

毕业设计——SU的建筑模型图

毕业设计——SU的建筑模型图 课程:建筑设计 课题:市商业中心 设计重点:商业特色设计+人居空间 选择不同类型的建筑功能和场地相结合,形成不同侧重的建筑表现,从“场地”、“功能”、“形态”、“技术”四个方面进行有目的的设计。 任务书: 拟在南方某市新建一处商业广场中心,结合市场要求和流行文化进行建筑设计。建筑可为多层次,结构形式和材料选择不限。建设地段内有水电设施,冬季采暖可以用壁炉或空调等。 商业中心的主要功能组成和规划要求: (1) 中心商场:广告牌布置,商铺布置等。 (2) 商业中心写字楼:视使用者商铺特点而定,可做琴房、画室、舞蹈室、娱乐室、健身房和书店等。 (3) 多栋商楼之间的连接:动线连接等。 (4) 周围环境规划:公交路线,绿化布置。 (5) 周围居住布局:针对环境要求布置周围居住楼的建设。 (6) 涉及特殊使用要求(请单独设计):例如,电影院、室内体育馆等。 (7) 外场地:自行决定儿童游乐或球场、花架、泳池、座椅等活动空间及景观绿化的设置。

资源

【毕业设计】基于CNN和词向量的句子相似性度量

基于CNN和词向量的句子相似性度量 开发环境 Anaconda + Pycharm 项目说明 毕业设计主要针对于句子相似度的计算,尤其是长句相似度,使用GoogleNews预训练的模型 GoogleNews-vectors-negative300.bin 数据来源 数据存放于本项目DataSet下 项目运行 clone 项目到本地 配置config.json文件:model_path用于存放 预训练模型存放的路径;dataset_path用于存放最后作实验评估的数据集存放的路径 从main.py开始运行,首先要点击初始化按钮加载预训练模型 在句子1和句子2处输入要计算相似度的句子 计算结果显示在相似度,WJ,WMD距离三个地方 可以每次换一个句子,并点击计算 计算完成,点击退出 结论验证 via:https://github.com/sivanWu0222/GraduationProject

资源

【毕业设计】基于机器视觉的害虫种类及数量检测

基于机器视觉的害虫种类及数量检测 一、研究目的 研究的目的在于建立一套远程病虫害自动识别系统,有助于缓解农业植保人员和病虫害鉴定专家的人力资源紧张,有助于病虫害知识有限的农业人员进行及时的病虫害检测,并且,通过害虫种类数目的监测和信息收集,定期对昆虫数据进行整理和分析,建立病虫害爆发的规律模型,进而预测判断病虫害爆发的时间,及时通知农业植物保护人员和农户进行合理地科学地预防。提高农作物产量和质量。 二、研究内容及结论 (1) 设计实现了一套可适用于野外的害虫捕获和图像采集装置。该装置放置在农业种植区域,24 小时进行害虫的诱杀和图像采集,同时,装置可以通过无线网络将害虫图像上传至农业监控中心虫类鉴别服务器,并进行害虫种类的识别,进行产区内害虫种类数目的信息收集。 (2) 开发了一套基于机器视觉的昆虫计数工作方法。开发了一套的适用于苍蝇粘板等包含多数昆虫设备的图像的基于机器视觉的昆虫计数工作方法。该方法首先对包含多数昆虫的图片进行二值化预处理,然后进行轮廓的查找,并进行轮廓的计数,得到的数目反映了图片中的昆虫数目的数量级。该方法适用于苍蝇粘板图像等包含多数昆虫虫体的图像上。 (3) 开发了一套基于机器视觉的昆虫识别工作方法和流程。该方法在参考已有研究成果的基础山,选取了昆虫形态特征中的昆虫矩形度、昆虫延长度、昆虫圆形度、昆虫球状性、昆虫叶状性等 5 个特征,进行昆虫图像的特征提取。之后,采用逻辑斯蒂回归模型、线性 SVM 模型和 K 邻近分类器分别进行训练,并测试比较训练结果,以进行分类器算法的筛选。该方法适用于本套图像采集装置。 (4) 设计了一套远程害虫自动识别系统。结合上述三个功能,该系统可以实现:在图像采集节点进行害虫捕获和昆虫图像采集,在虫类鉴别服务器进行昆虫图像的识别和分类。 三、目录 摘 要 ....................................................................................................................... I ABSTRACT ......................................................................................................... II 目 录 ..................................................................................................................... III 第 1 章 绪论 ..........................................................................................................1 1.1 课题研究的背景和意义......................................................................................1 1.2 国内外研究现状 .................................................................................................1 1.2.1 国内研究现状 ..............................................................................................2 1.2.2 国外研究现状 ..............................................................................................2 1.3 研究的内容和目的 .............................................................................................3 1.3.1 研究内容 ......................................................................................................3 1.3.2 研究目的 ......................................................................................................3 1.4 章节安排 .............................................................................................................4 第 2 章 系统总体设计 ........................................................................................5 2.1 系统设计目标 .....................................................................................................5 2.2 系统总体架构 .....................................................................................................5 2.3 图像采集节点 .....................................................................................................6 2.3.1 装置总体设计 ..............................................................................................6 2.3.2 运行流程 ......................................................................................................9 2.4 虫类鉴别服务器和虫类信息数据库设计 ......................................................... 10 2.4.1 服务器设计 ................................................................................................ 10 2.4.2 服务器虫类分类器实现 ............................................................................. 11 2.4.3 PC 上的昆虫分类识别软件 ........................................................................ 12 第 3 章 昆虫图像预处理与计数研究 ........................................................... 15 3.1 昆虫图像的采集 ............................................................................................... 15 3.2 昆虫图像的预处理 ........................................................................................... 16 III 3.2.1 图像的灰度化,高斯滤波和尺度变换 ...................................................... 16 3.2.2 二值化 ........................................................................................................ 17 3.2.3 大津法 OTSU 在昆虫图像二值化上的应用 .............................................. 18 3.3 昆虫图像的计数 ............................................................................................... 20 3.3.1 检测轮廓 .................................................................................................... 20 3.3.2 昆虫计数 .................................................................................................... 20 第 4 章 昆虫图像特征提取与识别研究 ...................................................... 23 4.1 特征的选取 ....................................................................................................... 23 4.2 特征描述以及提取方式.................................................................................... 23 4.3 分类器的选择和训练 ....................................................................................... 32 4.4 机器学习结果分析 ........................................................................................... 33 4.4.1 性能评价指标 ............................................................................................ 33 4.4.2 三种分类器的性能比较 ............................................................................. 34 第 5 章 总结与展望 .......................................................................................... 37 5.1 总结 .................................................................................................................. 37 5.1.1 完成的工作 ................................................................................................ 37 5.1.2 创新点和不足之处 .................................................................................... 37 5.2 展望 .................................................................................................................. 38 致谢 ........................................................................................... 参考文献 ............................................................................................................... 40 附录一:部分昆虫图像样本 ........................................................................... 42 附录二:OTSU 的 PYTHON 实现 .............................................................. 44 附录三:英文文献翻译 ....................................................... 文件介绍 用户界面 MainWindow.ui-----------------------PyQtDesigner设计的主界面文件 MainWindow.py----------------------PyUIC转换而成的主界面程序 运行逻辑 VideoMainWindow.py--------------PyQt结合OpenCV实现在界面中显示视频画面 PreProcess.py-------------------------对源数据样本进行预处理 特征提取 P_circle.py------------------------------似圆度 P_extend.py----------------------------延长度 P_leaf.py--------------------------------叶状性 P_rect.py--------------------------------矩形度 P_spherical.py------------------------球形度 GetFeatures.py-----------------------提取特征的模块 GetFiveFeatures.py-----------------五个特征提取的测试代码 FeatureExtract.py-------------------提取样本库特征保存到CSV文件 机器学习模块 LinearSVM.py-------------------------线性SVM分类器的训练和模型保存 LinearRegression.py---------------逻辑回归分类器的训练和模型保存 KneiborsClassfier.py---------------KNN分类器的训练和模型保存 Predict.py------------------------------加载预训练模型,对特征进行预测 Thresholding.py---------------------------大津法程序实现和OpenCV大津法函数的效果对比 Count.py-------------------------------------实现加载图片,二值化(大津法),查找轮廓进行计数的效果 GetChineseName.py--------------------分类中英文转换 via:https://github.com/veraposeidon/Insect_Identification

资源

【项目】基于G-MRF纹理信息的FMC侧扫声纳图像分割算法

基于G-MRF纹理信息的FMC侧扫声纳图像分割算法 一、研究目的 近年来,国内外对侧扫声纳图像分割算法的研究主要集中在对现有算法的改进或结合成熟的算法,现有算法存在两个主要问题,一是运算量很大,不能投入到实际应用;二是不考虑像素间关系的分割方法往往对噪声非常敏感。为了解决上述两个问题,研究了一种自动选择最优聚类中心并利用G-MRF纹理信息改进FMC算法。 二、 研究方法 本文提出了一种用于侧扫声纳图像分割的改进的FMC(模糊C均值聚类)算法。 由于侧扫声纳图像具有低对比度、低分辨率和高噪声的特点,结合图像纹理特征和原始图像来计算像素点距离聚类中心的距离。 首先,我们利用G-MRF(高斯马尔科夫随机场模型)来提取图像的纹理特征。然后重新定义FMC算法的聚类标准来完成对声纳图像的分割。最后给出了该算法和传统算法的实验结果,并总结了改算法的优点。 三、研究结论 本文提出了一种针对侧扫声纳图像分割的新的FMC算法。在相同条件下,对相同的声纳图像给出了FMC算法和GMRF-FMC算法的聚类结果,进行比较。最后的得出了相对FMC算法,GMRF-FMC算法并能够保持更多的目标的边缘信息。并具有良好的抗噪性的结论。 四、目录 第一章介绍标准FMC算法及初始聚类中心的设定。 第二章介绍G-MRF纹理模型,并提取纹理参数。 第三章利用G-MRF纹理建立新的FMC聚类准则。 第四章对比的实验结果。 第五章文章的结论。 来源https://github.com/yajunyang/ImgP

资源

【毕业设计】基于微信小程序的共享雨伞租借系统

基于微信小程序的共享雨伞租借系统 简介 共享雨伞由于符合节省资源、绿色出行、环保理念,得到了政府的极力提倡和支持。而微信小程序是一种不需要安装即可打开使用的应用。用户只需要通过进入本系统的微信小程序,交纳押金后扫描某把雨伞的二维码或者手动输入雨伞号,就能租借使用。还伞时,只需要把雨伞插回可归还的地方,然后确认付款就完成了所有操作。(由于无法模拟雨伞插回伞座,所以是要自己点击还伞的) 功能模块 自动注册登录 缴纳(退还)押金 获取当前位置和定位 使用扫描二维码用伞、手动输入伞号借伞 查询余额、充值余额 结束用伞 支付订单 关于登录与注册 这里使用的是用户无感的注册或者登录。 当用户授权使用本小程序的时候,调用微信官方登录接口,获取到code、encryptedData、iv发送给后台,后台判断是否已经注册过。 如果没有,立即注册,返回token;如果已经注册过,登录,返回token。 页面展示 1.授权登录 2.初次进来,先提醒交押金,已经交过直接到界面3 3.定位到当前位置显示在地图上,还有刷新定位按钮、立即用伞按钮、我的钱包按钮 4.点击了钱包按钮,进入到我的钱包页面,可查看余额和押金情况 5.点击了充值按钮后,有四个充值金额可选 6.如果界面3点击了立即用伞按钮,则进来解锁用伞页面,有两个方式,扫码或者手动输入 7.扫码用伞 8.手动输入雨伞号 9.借伞后的页面 10.结束用伞后 页面目录 pages balance // 余额充值 index // 有地图的 inputLock // 手动输入雨伞号 logs // 没用到,查看启动日志 order // 订单详情 pay // 支付 payDeposit // 交纳押金 wallet // 我的钱包 welcome // 选择解锁方式 via:https://github.com/LiaPig/WeChat-shareUmbrella

资源

[课设]一个基于opencv、dilb的员工人脸识别考勤系统

一个基于opencv、dilb的员工人脸识别考勤系统 一、需求分析 选题“员工刷脸考勤”,要求采用python语言开发,可以通过摄像头添加员工面部信息,这里就涉及到两个具体的个问题,一个是应该以什么样的数据来标识每一个员工的面部信息,二是持久化地保存这些信息到数据库中去。更细地,还涉及表的设计;另一个基本要求是通过摄像头识别员工面部信息来完成考勤,这个问题基本可以通过遍历数据库里的员工面部数据与当前摄像头里的员工面部数据的比对来实现,但有一个问题就是假如摄像头里有多张人脸改怎么处理。扩展要求是导出每日的考勤表,可以拆分为两个部分,一个是存储考勤信息,一个是展示考勤信息。 我们希望达到的目标是: (1)仿照通用型软件界面设计的原则,所有的操作都在菜单栏里实现,一部分区域用于展示摄像头实时读取并由程序加工后的视频流信息,另一部分区域做控制台输出,打印相关信息,比如提示员工面部信息添加成功、添加失败及其原因,提示员工打卡成功、打卡失败及其原因;添加面部信息时人是必须和程序进行交互的,比如输入一些相关的信息,这个时候程序是阻塞的;但是在打卡的时候,程序是不阻塞的,如果不点击关闭打卡,它会一直在打卡的模式,等待并识别每一个前来打卡的员工,这比较符合现实的使用场景。 (2)建表来存储员工信息和考勤信息,每次新建录入员工面部信息时,要求输入工号、姓名,并查无重后方可录入,录入时只取距离屏幕最近的员工的面部信息,这是考虑到实际打卡都是依次进行而不是一群人一群人地打卡,录入时有两种模式可供选择,自动模式:一旦识别到人脸就自动捕获截图,连续截图达到10张就结束录入;手动模式:点击菜单结束录入,不一定要得到10张。结束录入后就开始从刚才捕获的员工面部提取人脸特征数据并连同之前输入的员工姓名等数据作为一行记录保存到数据库中,如果没有捕获到员工面部或者刚才捕获的面部信息不是同一个人,这行记录就被丢弃。 考勤时,须满足三个条件:面部信息已录入、在打卡时间段内、未重复打卡,有打卡成功,打卡人姓名及工号、打卡日期及时间才会被当成一行记录保存到数据库并在控制台输出打卡成功信息,否则会在控制台输出失败及其原因信息。 总而言之:我们的设计目标是规范化、人性化。 二、总体设计 为了完成上述目标一,程序的界面初始化分为三部分,第一部分初始化菜单栏,第二部分初始化左边控制台,第三部分初始化右边展示面板,使这三部分相互独立;数据逻辑部分的初始化分为两部分,第一部分是数据库部分的初始化,如果数据库/表不存在就新建,存在则加载相关数据,第二部分是初始化一些需要循环使用的变量,比如新建录入时的员工姓名、工号、截图数目计数器等,每当完成录入时这些数据都应该被重置成初始化以待下一次录入,把这些初始化语句写成一个函数可以提高代码复用度。 上述目标二主要是一些限制性条件,可以通过添加判断语句来实现,比如对输入id的合法性检验: 其中ID_WORKER_UNAVIABLE是id的初始化值-1,不可用,self.knew.id是从数据库里加载出来的id列表,如果id非法(已重复或者不在0~100000000,就会一直有新的弹窗来提示输入id。 再比如对多张人脸时、只处理距离屏幕最近的员工的面部信息: dets是侦测到的所有面部数组,biggest_face是距离屏幕最近的面部。 本次课设的完整过程如下:选了员工刷脸考勤系统以后,我和小组成员查阅了大量资料,了解到dlib这个库,于是我们利用dlib库自带的人脸预测器、特征提取器,然后计算128d特征来完成人脸识别,再加上我们之前构想的逻辑,大致完成了课设,由于完成得早,我们大致在课设安排时间的一半时就给老师检查,虽然基本要求和拓展要求都已经实现,但是还有许多可以完善的地方,老师给出了许多宝贵的意见: (1)把数据保存的地方由csv文件改成数据库。 (2)减少弹出式界面,用frame替换的方式解决之。 (3)刷脸打卡的界面不需要打卡者交互,全自动打卡。 最后检查的时候这些问题都被解决了。 程序框图: 本程序的设计思想大致可分为以下几个方面 (1)面向对象的原则,整个程序的主体就是一个WAS(WorkAttendanceSystem)类,所有的实现都围绕这个类展开。 (2)界面和数据逻辑分离的原则,WAS类的初始化过程包括界面的初始化和数据初始化,两者相互独立。 (3)代码封装原则,多次调用的语句集写成接口供调用,没有冗余的代码。 接口隔离原则:使用多个专门的接口,而不是使用单一的总接口。 三、详细设计 函数清单 注:所有类内的函数的第一个参数为self,表明该函数属于该类,后面不再赘述 (1)def __init__(self) WAS类的构造函数,主要是完成一些初始化操作,如初始化菜单、信息打印面板、主展示面板以及初始化加载数据库、初始化循环使用的变量。 (2)def initMenu(self): 完成菜单的初始化显示,点击事件绑定。 (3)def initInfoText(self): 完成左边信息提示面板的初始化显示。 (4)def initGallery(self): 完成右边主展示面板的初始化显示。 (5)def initDatabase(self): 数据库的初始化,建立数据库连接(如果数据库inspurer.db不存在则先新建),如果数据库中不存在员工信息worker_info和考勤logcat这两个表,则依次创建。 (6)def loadDataBase(self,type): 该模块函数完成从数据库读取数据的操作,包括读取员工信息和考勤信息,第二个参数type用于标识是加载员工信息还是考勤信息,一方面,可以统一接口,打开数据库和得到游标、关闭连接是一样的,将两个读取接口合二为一,提高代码复用度;另一方面,可以减少加载的工作量,减少IO,提高程序运行速度;最后,因为读取信息前对上一次读取的信息列表做了清空处理,用type标识可以避免读取一个表时对另一个表造成的误操作。 (7)def insertARow(self,Row,type): 该模块函数完成写数据库操作,第二个参数为准备写的一条记录,第三个参数type表示要对哪一个表进行写操作。 (8)def adapt_array(self,arr): 将提取的人脸特征信息(列表)压缩,入口参数就是待压缩的数据,出口参数是压缩后的数据,用于写入数据库。 (9)def convert_array(self,text): 将读取出来的数据解压缩成人脸特征信息,入口参数是待解压得数据,出口参数是解压后的数据。 (10)def return_euclidean_distance(feature_1, feature_2): 计算两个人脸的欧式距离,入口参数是两个人脸的特征数据,出口参数是判定的结果,欧式距离大于0.4判为不同,不大于判为相同。 (11)def OnNewRegisterClicked(self,event): 见名知义,菜单新建录入的监听事件,参数event为事件信息,其他几个菜单(OnFinishRegisterClicked,OnStartPunchCardClicked,OnEndPunchCardClicked,OnOpenLogcatClicked,OnCloseLogcatClicked)类似,在此不再赘述。 (12)def getDateAndTime(self): 得到当前日期和时间,并组装成特定格式作为出口参数返回。 函数调用关系:箭头指向被调用者 四、程序运行结果测试与分析 1、程序主界面 2、新建录入 我们看到,信息栏有人脸数据重复警告,本次录入取消。 于是我们把数据库数据删了重来。 下面是打印的日志信息(为保证格式,复制到记事本中截的图) 看到已经录入成功了。 3、开始打卡 提示信息打印如下: 迟到与否的临界时间是9:00 4、展示日志 只有已经录入且第一次成功签到才会写进到数据库,无论迟到与否。 五、实验心得 遇到的问题及解决办法: (1)opencv自带的视频窗口不支持太多的UI扩展,怎么把视频流嵌到自定义的界面上去是一个棘手的问题,于是我想到了实现实时截图,然后把图片显示到面板上去,这里有一个延时的问题,opencv只允许整秒整秒地设置延时时间,设置成0s,程序会卡死,只好设置成1s,于是我们看到的‘视频流’会有少许的延时和卡顿,后面看到opencv还有一个设置刷新率fps的接口,但是尝试了也没用,估计和延时有冲突,最最后面只好开了一个子线程来做这些处理,防止主线程阻塞。 (2) 识别人脸的时候如果有多张人脸入境,最开始我是只取所有识别到的人脸的第一张人脸,但是无法保证在许多时刻点都是同一个人脸,因此做了改进,取距离屏幕最近的人脸,具体做法是求最大的人脸面积,一般来说距离屏幕越近面积越大。 (3)其他的大都是编写程序过程中遇到的问题,比如什么中文设置问题,变量没有按照预期演化,这个时候,一般百度或者google,在csdn或者stackoverflow能找到解决办法,或者在pycharm开启debug模式,追踪变量等,在此不在赘述。 本人承担的任务: 人脸识别、UI设计及编写代码、日志展示。 因时间关系没有完成的问题 总而言之,此员工考勤系统最核心的就是人脸识别,在此我直接用的是python 第三方库dlib自带的人脸预测器、特征提取器,对于同一人多份特征的处理也仅仅是取平均脸而已,平均脸的缺点有 (1)受环境影响大,如果在光线弱的环境录入人脸,在光线好的地方可能就会出现识别错误,但是这个问题可以用取光线弱和光线好的环境下的人脸取平均来解决,显然比较麻烦。 (2)计算量比较大,每一条特征有128个数据,10张截图求平均就有1280次加法和128次除法。 而利用卷积神经网络来实现人脸识别可以有效地提高人脸识别准确度,后续我将学习用卷积神经网络和聚类来构建训练模型。 比如模型训练阶段 其中神经网络部分: 然后根据模型去识别人脸,最高识别准确率可达99%以上。 六、代码 转载自https://github.com/inspurer/WorkAttendanceSystem

资源

【项目】图片文字信息提取

图片文字信息提取 1.网店工商信息图片文字提取 图片内容如下所示,但每张图片中信息出现的位置不尽相同,题目要求所写的程序能够完成如下几个功能点。 程序能够识别不同格式的图片,并能够提取所要求的信息。 从图片之中提取企业注册号和企业名称信息,并保存到Excel表格之中。 程序能够自动读取企业工商信息图片所在的文件夹路径。 识别速度保持在60秒识别50张图片,识别正确率保证在95%以上。 2.Tess4j 了解题目要求之后,我们便开始来解决问题。首先明确一点的是,肯定不能从头去写文字识别算法或者文字识别程序,OCR(Optical Character Recognition , 光学字符识别)发展这么多年来,开源的库肯定不少,只需找到适合中文识别的类库或者项目即可。 个人采用的是Tess4j开源库,其中Tess4j是由Tesseract扩展而来,Tesseract是HP实验室开发由Google维护的开源OCR引擎,Tess4j支持Tiff,jpeg,gif,png,pdf等多种格式识别。我们只需要在https://sourceforge.net/projects/tess4j/ 下载类库,然后编写下述代码便可实现文字识别,使用方法很简单。如果你要使用的话,请注意package,imageFile,instance的位置。 3.网店工商信息图片文字提取 下载的tess4j项目自带英文字体库,而我们需要识别中文信息,所以需下载中文简体字体库。字体库下载完成之后,将题目提供给我们的图片进行识别,识别之后发现准确率很低,而且识别时间过长,所以需要对图片进行处理。 企业注册号 : 913302055612570鄄7 ′ 企业名称: 宁麦皮中哲票广鲳I忏善 蓼鬓′墓示埔壹甬 类 型 霉嫣膘占辆 虫资) 趴辕~蓼唧 ` 住惑7妻 踢「【庄北长兴路689弄22号11巾童A1壬蔚雀菅业^ 刁乏喔憩」壹雇 法 人: 杨禾口荣 成立时间:2010-08-26 甬 甬 注册资本 : 1000万人民币元 / / 营业I言【j目〖艮:2010-08洲:i墅o碾言壹 鹏 莹鬓、′墓示簪 经莒范戛蓼反逼卫 目艮饰日勺扎匕发、 零售、 薯批愤嵩爵签稻昊信息的咨询 ; 服装i氦十犹撕{ 菖〈茵珥跨止\ 懦牌苣理 广告服务、 企业苣癫颧琨蓼 扩〈喔圃蓼′ 登i 机关 : 浙江雀宁波市江北区工商『壬政苣王里局 核准时间 : 2015-12-24 __日q __日辄 3.1去除水印 首先能够看到,提供的图片带有天猫营业执照信息公示专用水印,所以我们需要进行去水印处理。花了很长时间在网上找去水印的开源代码,但多数都需要先提供水印模版,然后才能进行去水印处理。 水印模版不是问题,我们直接截取水印图片即可,但重点是去水印处理之后,水印去除效果并不是很理想。观察一番之后,发现所有的图片水印都是同一个颜色,那么我们是不是可以把水印的rgb值改为和背景色相同,实验之后发现果然可以。 由于代码比较简单,此处就不再贴出代码,可以自行尝试一下。然后重新对图片进行识别,发现准确率还是很低,那是什么原因呢? 企业注册号 : 913302055612570鄄7 ′ 企业名称: 宁麦皮中哲票广鲳I忏善 蓼鬓′墓示埔壹甬 类 型 霉裴章膘占辆 虫资) 趴辕~苜趴 ` 住惑)妻 踢「【庄北长兴路689弄22号11巾童A1壬蔚雀菅业^ 刁乏喔憩」壹雇 法 人: 杨禾口荣 成立时间:2010-08-26 甬 甬 注册资本 : 1000万人民币元 / / 营业I言【j目〖艮:2010-08洲:i墅o蔺言壹 鹏 莹鬓、′墓示簪 经莒范戛蓼反逼卫 目艮饰日勺扎匕发、 零售、 薯批愤嵩爵垦稻昊信息的咨询 ; 眼装i氦十犹撕{ 菖〈茵珥跨止\ 懦牌苣理 广告目艮务、 企业苣癫颧寰蓼 扩〈喔圃蓼′ 登i 机关 : 浙江雀宁波市江北区工商『壬政苣王里局 核准时间 : 2015-12-24 __日q __日辄 3.2图片格式转换 将图片放大之后,发现图片处于全黑的状态,完全看不到任何字。然后尝试将图片格式转换为其他格式,比如jpg,当然这里不是直接改后缀名,而是利用在线图片格式转换工具。当然你也可以转换成其他格式,看看效果如何,转换完成之后,再次进行图片文字识别,发现准确率有较大提升。 企业注丹舟号 : 9133020……612…70177 企业名称 : 宁波中哲慕尚电子商务有限公司 类 型 : 有限责任公司〈法人独资) 住 所 二 宁波市江才匕长兴路689弄22号11瞳A112室 法定代表人: 杨禾口荣 成立时间 : 2010-08-26 注册资本 : 1000万人民币元 营业期限 : 2010-08-26至2020-08-25 经菖范围 : 服装、 箱包、 鞋帽 眼饰的批发 零售、 网上批发` 零售及棺关信息的咨询 : 眼装i毓十 、 企业品牌营王里、 广 告眼务、 企业盲理咨询。 登记机关 : 浙江雀宁波市麦工才匕区工商肴壬政苣王里局 核准时间 : 2015-12-24 3.3分区域识别 图片识别准确率有一定程度提升之后,但是时间耗费还是很高,大概15s左右,所以需要进一步优化。 由于题目只需要我们识别企业注册号和企业名称,所以没有必要识别整张图片。但我们又不知道企业名称和企业注册号处于图片的什么位置,所以只能扫描着进行文字图片识别。 我这里采用的是每次识别图片高度的18%,例第一次识别区域为0-18%,如果没有识别到我们所需的文字信息,下次识别图片15%-32%,这样就不会遇到文字刚好被识别区域切割的问题。 那这样识别会识别到很多重复区域,时间怎么会提升呢?其实不然,观察题目所给的50张图片,其中有46张图片的信息都是在头部,那么第一次扫描便能得到所需的信息,综合来看时间有很大程度提升。另外如果长时间未能识别到某张图片信息,那么则自动放弃识别。更改程序后重新识别图片,时间有很大程度提升,每张图片的识别速度在3s左右。 企业注册号 : 913302055612570177 企业名称 : 宁波中哲票尚电子商务有眼公司 对于本张图片来说,企业注册号已经能够正确识别,但是企业名称还是有个别字错误,比如将幕识别成票,将限识别成眼,因此需要进一步优化。 3.4 图片二值化 为进一步提高准确率,我们将图片二值化,然后再对图片放大10倍,其实放大倍数越高,识别准确率也应该越高。这里为了在时间和准确度之间做个平衡,对图片只放大10倍。 图片放大10倍之后,我们再次对图片进行识别,发现企业注册号和企业名称完全正确。 企业注册号 : 913302055612570177 企业名称 : 宁波中哲幕尚电子商务有限公司 3.5图片模糊寻找和结果导出 图片模糊寻找的意思也就是,给出图片文件夹的大致路径,然后程序能够找到正确的图片路径,并能够正确进行文字识别。比如给定/Users/zhenhai/Downloads/SoftwareCup/Tess4J路径,程序能够找到/Users/zhenhai/Downloads/SoftwareCup/Tess4J/test/resources/tianmao1/1.jpg路径。然后将识别到的结果导出到Excel表格,问题也很简单,这里也就不给出相应代码。 至此已经能够识别图片,而且准确率挺不错,准确率在95%左右,识别成功之后也能够正常导出至Excel表格。但时间依旧不理想,目前识别50张图片大概在2分钟30s左右。 4.待优化 图片文字识别方面只做了4天,之前也没有做过相关问题,所以还是有很大的优化空间。 利用多线程,识别时间应该能够减少1分钟,达到1分钟30s识别50张(猜测)。 由于我们直接利用网上的字库,没有对字库做任何训练。比如可以将出现频率较高的词设置更高的优先级,这样不仅能够提高准确率,而且能够进一步降低时间,比如上述的限不会再识别成眼。 图片大小不一,可以将图片设置为平均宽度和高度,然后再进行分区域识别。而且每次识别时候不是识别企业注册号和企业名称的完整信息,而只是试探识别这几个字,如果识别成功之后,然后再扩大识别宽度,提取所需要的完整信息。 来源https://github.com/weizhixiaoyi/OCR

资源

【毕业设计】针对Deepfake假脸视频面部细节特征的提取算法

针对Deepfake假脸视频面部细节特征的提取算法 一、研究意义 网上多数 Deepfake 是用于色情政治等方面的恶搞行为。对于知名度很高的明星来说,人们知道不是其本人,所以影响并不是很大。但对于普通人或者知名度比较低的女星来说,与其相关的 Deepfake 视频的影响将会使其名誉受损,难以自辩。而政治方面的影响将会更加严重,比如挑起矛盾,引发战火等等。对 Deepfake 假脸视频的面部细节特征提取算法的研究,首先是提取视频图像的面部特征,能够挖掘合成视频与原始视频的差异,可以更好地判别真假视频。这将对Deepfake 犯罪形成一定的威慑力,营造更好的社会环境。 二、研究内容及结果 1.本次实验所提取的 SURF 特征和 ELA 特征都是比较新颖的特征,国内外有所研究但很少与检测 Deepfake 视频联系起来,本次实验导师提出将这几个方面结合起来,实验效果表现良好。 2.SURF 特征和 ELA 特征的提取都十分方便。一是原理简单易懂:SURF 有两大提高运算的法宝:integral images, box filters 在 Hessian 矩阵上的使用,降维特Descriptors的使用;ELA 利用 JPEG 全图相同压缩率的特点做差对比。二是有现成的库函数可以实现这两个特征的提取工作。 3.相较于其他特征,以上两种特征还有如下优势:提取以上两种特征所得到的数据量很少:当图像大小为 256×256 时,前者每幅图像为4×n 个(n 为特征点数量),后者每幅图像为65536 个。但这些数据量足以用于训练 SVM 分类器和用于 SVM 分类器检测。 原图及效果图 三、目录 摘要...............................................................................................................................II Abstract.......................................................................................................................III 目录.............................................................................................................................IV 第一章绪论.................................................................................................................. 1 1.1 GAN 简介.............................................................................................................. 1 1.2 Deepfake 简介......................................................................................................1 1.3 研究背景及意义 ................................................................................................... 2 1.3.1 研究背景........................................................................................................... 2 1.3.2 研究意义........................................................................................................... 3 1.4 国内外研究现状 ................................................................................................... 3 1.5 论文结构 ...............................................................................................................5 第二章 相关工作..........................................................................................................6 2.1 图像人脸提取方法的比较 ......................................................................................6 2.1.1 方法简介........................................................................................................... 6 2.1.2 实验对比........................................................................................................... 7 2.2 视频分帧存图的实现 ............................................................................................9 2.3 颜色直方图简介 ..................................................................................................10 2.4 SURF 概念原理简介 ...........................................................................................12 2.5 ELA 概念原理简介...............................................................................................13 2.6 SVM 概念原理简介........................................................................................... 15 2.6.1 线性可分......................................................................................................... 16 2.6.2 线性不可分..................................................................................................... 16 2.6.3 其他相关概念................................................................................................. 16 2.7 总体实验流程图 ............................................................................................... 17 2.8 本章小结 ............................................................................................................18 第三章 特征提取与分类........................................................................................... 19 3.1 颜色直方图代码实现介绍 .................................................................................. 19 3.2 SURF 代码实现介绍 ........................................................................................ 20 3.3 ELA 代码实现介绍............................................................................................24 3.4 SVM 代码实现介绍.......................................................................................... 26 3.5 本章小结 ............................................................................................................28 第四章 实验结果与分析........................................................................................... 29 4.1 视频分帧存图结果展示 ................................................................................... 29 4.2 人脸提取结果展示 ...........................................................................................30 4.3 颜色直方图特征提取结果展示 ............................................................................ 31 4.4 SURF 特征提取结果展示 ................................................................................... 34 4.5 ELA 特征提取结果展示........................................................................................ 36 4.6 SVM 分类效果展示...............................................................................................38 4.7 实验结果分析 .......................................................................................................39 4.8 本章小结 ............................................................................................................. 45 第五章 总结与展望..................................................................................................... 46 5.1 优势分析 ..............................................................................................................46 5.2 劣势总结 ............................................................................................................. 46 5.3 工作展望 ............................................................................................................ 47 参考文献.....................................................................................................................48 致谢............................................................................................................................52 via:https://github.com/Allenem/graduation-design

资源

【毕业设计】基于tensorflow、keras/pytorch实现对自然场景的文字检测及端到端的OCR中文文字识别

基于tensorflow、keras/pytorch实现对自然场景的文字检测及端到端的OCR中文文字识别 功能 文字检测 实现keras端到端的文本检测及识别(项目里面有两个模型keras和pytorch。) 不定长OCR识别 Ubuntu下环境构建 模型 一共分为3个网络 文本方向检测网络-Classify(vgg16) 文本区域检测网络-CTPN(CNN+RNN) EndToEnd文本识别网络-CRNN(CNN+GRU/LSTM+CTC) 文字方向检测-vgg分类 基于图像分类,在VGG16模型的基础上,训练0、90、180、270度检测的分类模型. 详细代码参考angle/predict.py文件,训练图片8000张,准确率88.23% 模型地址BaiduCloud 文字区域检测CTPN 支持CPU、GPU环境,一键部署, 文本检测训练参考 OCR 端到端识别:CRNN ocr识别采用GRU+CTC端到到识别技术,实现不分隔识别不定长文字 提供keras 与pytorch版本的训练代码,在理解keras的基础上,可以切换到pytorch版本,此版本更稳定 使用 体验 运行demo.py或者pytorch_demo.py(建议) 写入测试图片的路径即可,如果想要显示ctpn的结果,修改文件./ctpn/ctpn/other.py 的draw_boxes函数的最后部分,cv2.inwrite('dest_path',img),如此,可以得到ctpn检测的文字区域框以及图像的ocr识别结果 在进行体验的时候,注意要更改里面的一些内容(比如模型文件等) 模型训练 1 对ctpn进行训练 定位到路径--./ctpn/ctpn/train_net.py 预训练的vgg网络路径VGG_imagenet.npy 将预训练权重下载下来,pretrained_model指向该路径即可, 此外整个模型的预训练权重checkpoint ctpn数据集还是百度云 数据集下载完成并解压后,将.ctpn/lib/datasets/pascal_voc.py文件中的pascal_voc 类中的参数self.devkit_path指向数据集的路径即可 2 对crnn进行训练 keras版本 ./train/keras_train/train_batch.py model_path--指向预训练权重位置 MODEL_PATH---指向模型训练保存的位置 keras模型预训练权重 pythorch版本./train/pytorch-train/crnn_main.py pytorch预训练权重 文字检测及OCR识别结果 主要是因为训练的时候,只包含中文和英文字母,因此很多公式结构是识别不出来的 来源https://github.com/pengcao/chinese_ocr

资源

【JAVA课程设计】I Don’t Wanna Be The Bugger

Java程序设计实践——I Wanna Be The Guy游戏同人作品 一、课程设计项目简单描述 在美国早期游戏业比较宁静的时代,I Wanna Be The Guy 作为一款难度较高的冒险类游戏,在当年很多人玩过。玩家将体验一个年轻、懵懂的孩子为了追寻理想中的角色所经历的过程。变幻莫测的完美剧情只是这项无限创意中的一部分,令人沮丧的跳跃和射击的挑战会使你对这个主角小孩产生敬意。 I Wanna出名后,一些地方开始举行I Wanna 大会,并利用GM8和MMF2等工具制作I Wanna。除此之外,在PIXIV上也有I Wanna相关的作品。 该课程设计项目属于I Wanna Be The Guy游戏同人作品,构建了人物、关卡、关卡元素等模型;获取了相应的素材图片与音乐,丰富了游戏的内容;实现了基本的人物移动跳跃死亡,关卡和各种多种机关的创建,关卡切换和重开,存档等多种功能。 基于java语言封装使关卡的布局更加方便,精心设计了四个关卡使游戏更加具有乐趣。 二、需求分析 三、系统设计 1.碰撞检测算法 该算法为较为重要的算法,所有的关卡元素以及人物都继承自Thing类,judgeCrash方法通过判断传入两个类的图片是否重叠进而返回是否碰撞。 矩形重叠判断公式 X轴:[(x1+w1/2)-(x2+w2/2)]<(w1+w2)/2 Y轴:[(y1+h1/2)-(y2+h2/2)]<(h1+h2)/2 当判断公式返回真值时说明矩形重叠。 2.GameComponent类 1)Timer类和ActionListener接口 通过ActionListener监听器和Timer结合定时调用Kid类的run方法和Level类中的scan方法,使画面每隔固定的一段时间改变并调用repaint刷新画面显示从而达到动效。 2)KeyListener接口 使用KeyListenr对键盘输入监听,并对相应键的KeyPress调用Kid或者Level的方法对其的状态进行改变。 3)窗体的绘制 GameComponent继承于JComponent重写了paintComponent方法,调用Kid类和Level类的draw方法绘制出当前的画面。 4)重新游戏 当监听到键盘键入‘R’或‘r’时调用restart方法,进而调用Kid对象的reset和Level的reset重置关卡。 3.Level类 1)Level类的数据域 2)关卡的设置与重置 Level中的reset具有关卡设置与重置的功能,将对应关卡的元素载入对应的ArrayList中,在draw类被调用时会根据载入的元素的坐标和贴图绘制出所有载入的元素,从而形成关卡,重置亦是如此。 3)关卡元素的检测和动态变化 Scan方法会对所有的关卡元素进行扫描,如果满足触发条件,则调用关卡元素的触发内容。还可以定义关卡进行时的动态变化(触发后某个机关才会出现的某个机关需要在这里设置)。 4.Kid类 1)Kid类中的数据域 2)Kid类状态的改变 通过jump、walk、fall、idle、die方法,使Kid对象进入某种状态,并改变Kid对象的数据域。 3)Kid类的坐标根据状态的改变 人物根据坐标数据定位,在run方法中定义了当Kid处于某种状态时,实际的坐标根据随之改变。由于GameComponent的定时调用,从而达到人物状态改变的效果。 4)Kid类的绘画 Draw方法根据人物当前的状态载入对应的图片,并显示在窗体上。 5)Kid的重置 当Kid经过死亡状态后,触发重开游戏后调用reset方法将Kid设置为初始状态。 6)Blood类 在Kid进入死亡状态时,将人物死亡坐标传入Blood类,初始化500个血液坐标,并使用随机数方法随机出500个横纵轴速度,使500个血液坐标改变,最后调用绘制在屏幕上。 5.Platform,Trap,Judge,Save类 (四类具有大部分相似的数据域与方法,以Platform为例分析) 1)Platform类的数据域 2)Platform类的站立与阻挡 judgeKidCrash方法通过对Kid对象和Platform对象当前坐标进行一系列碰撞的判定,并对站立与阻挡两种不同的状态对Kid对象内部数据进行改变,从而达到站立和阻挡效果。其余三类均有通过碰撞检测实现的一些功能。 3)Platform类的移动 Platform对象在Level类中检测是否触发自身判定区域,若已触发判定区域,则调用move方法对Platform的坐标进行改变。由于GameLevel会定时调用Level类的检测方法,从而达到移动的效果。 4)Platform的绘制 Draw方法根据平台当前的状态载入对应的图片,并显示在窗体上。 6.ImageTool和MusicTool 在GameComponent创建时就将图片数据和音乐数据载入内存中,提高读写速度的同时也方便之后的读取。 四、效果及存在问题 1.运行效果 Level 1 Level 2 Level 3 Level 5 2.存在的问题 1)碰撞算法精度问题 由于能力暂时的有限,所有的碰撞检测都只采取了矩形检测重叠的方法来判断是否碰撞,导致碰撞判定的精度并不高(会导致还没触碰机关元素到就死亡的现象)。 预期解决方法:引入检测像素碰撞方法,在一些需要精度比较高的地方使用。 2)人物物理引擎的死板 原作的物理引擎可以根据按下键盘时的停留时间对人物跳跃的高度和速度做相应的处理,本作并没有做到比较死板,会造成有时候关卡的设计难度增大(因为需要人物本身是否能够通过)。 预期解决方法:监听键盘按键时间,并对其做出不同的反应。 3)陷阱形式比较单一 只设计了最基本的移动陷阱方法,并没有设计出更多的陷阱方式(虽然已经可以衍生做到很多不同的陷阱效果),游玩过久可能会觉得枯燥。 预期解决方法:多设计一些不同的陷阱类型并应用。 4)关卡放置方面过于底层,不是很好操作 关于关卡的放置还是处于代码层,新设计的关卡都需要重新写进代码里才可以显示,参数过于繁琐,不够方便。 预期解决方法:制作一个具有交互界面的游戏制作器,可以直接生成数据并传入内部程序运行。 五、参考文献 [1][美] 凯.S.霍斯特曼(Cay S. Horstmann).Java核心技术·卷 I(原书第10版)[M].机械工业出版社 转载自https://github.com/LikeGhost/I-Don-t-Wanna-be-the-Bugger

  • 1
  • 18
  • 19
  • 20
  • 27
前往