PYQT5+CNN(TensorFlow-keras)做一个简单的手写数字识别PC端图形化小程序

本文介绍了作者上学期多媒体课的项目,包括画板和图片识别功能,简洁UI设计,基于CNN和sklearn库的图像预处理、数字识别算法,以及代码实现和优化。探讨了CNN在数字识别中的优势,以及不同算法如RandomForest、KNN和DecisionTree的应用。
摘要由CSDN通过智能技术生成

目录

前言

一、功能介绍

1.画板识别

2.图片识别

二、UI设计

1.整体设计思想

2.颜色设计

3.Logo 设计

4.按钮设计

三、算法介绍

1.图片预处理

2.数字分割和显示

3.识别算法

4.UI搭建

四、代码及架构

1.配置环境

2、代码结构

1、main

2、Tan

3、Run

4、predict

5、train

6、tarin_new

3、全部代码

1、main

2、Tan

3、Run

4、predict

5、train

6、tarin_new

总结

1.一些不足之处

2.界面和交互

3.网络搭建

4.深度学习算法设计与评估基本步骤总结


前言

        这个其实是我上学期多媒体课的大作业(本文译自实验报告233),综合了网上一些零碎资料,谨以记录学习经历,如有错漏、不完善之处,请多多指正!

        ps:文章框架参考了两篇博客,但是写的时候有点找不到了ORZ,要是有人发现雷同,帮忙找到文章,我会标记到文末,感激!


一、功能介绍

1.画板识别

(1)可以选择算法,默认为 CNN

(2)在“画板”模块处可以进行鼠标绘制,绘制时接近画板中央会效果更好

(3)点击按钮“画板识别”即可进行识别,结果会显示在“结果”处

(4)点击按钮“画板擦除”即可清空“画板”模块。

2.图片识别

(1)可以选择算法,默认为 CNN
(2)点击按钮“图像识别”可选择需要上传的图片,点击确认后进行识别,结果会显
示在“结果”处

二、UI设计

1.整体设计思想

        画面简单干净,用户逻辑清晰。(划水)
        

2.颜色设计

        采用了白+ 蓝的基础设计思想,突出简单干净。(摸鱼)

3Logo 设计

        将猫咪和电脑结合,突出可爱和清爽。(某次PS课程作业)

4.按钮设计

        圆滑边角,略微阴影,突出舒适干净。(随便找的模板)

三、算法介绍

1.图片预处理

1 )调用 cv2 库读入图片,用插值的方法统一 resize 960:640 的比例
2 )灰度化
3 )二值化
4 )放大轮廓,再除去噪点。

代码如下:

image = cv2.resize(img, (960, 640), interpolation=cv2.INTER_LINEAR)
# 将这帧转换为灰度图
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 二值化
retval, binary = cv2.threshold(gray, 90, 255, cv2.THRESH_BINARY_INV)
# 放大所有轮廓
contours, hierarchy = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for i in range(len(contours)):
    cv2.drawContours(binary, contours, i, (255, 255, 255), 5)
# 过滤噪声点
contours, hierarchy = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for i in range(len(contours)):
    perimeter = cv2.arcLength(contours[i], False)
    if perimeter < 100:
        # print(s)
        cv2.drawContours(binary, contours, i, (0, 0, 0), 15)

# cv2.imshow('binary_f', binary)

contours, hierarchy = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

2.数字分割和显示

1 )遍历每个查到的轮廓,得到中心距,并画出绿色框图
2 )读取框图内的图片进行预测
3 )将预测结果显示在已画框图的中上位置

代码如下:

for i in ran
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值