day11 - 手写数字笔迹细化

news2024/11/25 16:03:11

手写数字笔迹细化

对于手写数字识别实验中,经常会遇到因为笔迹较粗导致误识别的情况,所以我们通常会先将笔迹进行细化,笔迹变细以后,数字的特征会更明显,后续进行识别的准确率就会更高。

例如数字7 和 1 ,因为书写习惯的不同,在识别图像如果使用原始图像,笔迹较粗,经常会识别错误,但是经过腐蚀操作,笔迹变细以后,会很容易将二者区分开。

请添加图片描述

本期我们重点学习图像的腐蚀操作,通过图像腐蚀来将手写数字的笔迹进行细化。

完成本期内容,你可以

  • 了解图像腐蚀的原理和应用

  • 掌握使用图像腐蚀进行图像处理

若要运行案例代码,你需要有:

  • 操作系统:Ubuntu 16 以上 或者 Windows10

  • 工具软件:VScode 或者其他源码编辑器

  • 硬件环境:无特殊要求

  • 核心库:python 3.6.13, opencv-contrib-python 3.4.11.39,opencv-python 3.4.2.16

点击下载源码


腐蚀

OpenCV将腐蚀封装成了cv2.erode()方法。

函数原型:dst = cv2.erode(src, kernel, anchor, iterations, borderType, borderValue)
dst为输出图像。

参数描述如下:

  • src:被处理的图像
  • kernel:腐蚀使用的核
  • anchor:可选参数,锚点的位置
  • iterations:可选参数,腐蚀操作的迭代次数,默认值为1
  • borderType:可选参数,边界样式,建议采用默认值
  • borderValue:可选参数,边界值,建议采用默认值

具体步骤

1. 创建项目结构

创建项目名为手写数字笔迹细化,项目根目录下新建code文件夹储存代码,新建dataset文件夹储存数据,项目结构如下:

手写数字笔迹细化                          # 项目名称
├── code                               # 储存代码文件
├── dataset                            # 储存数据文件

注:如项目结构已存在,无需再创建。

2. 使用腐蚀操作对数字 7 进行处理

  1. code文件夹下创建number_7.py文件;
  2. 导入所需的库,OpenCV、numpy;
  3. 读取dataset文件夹下的7.png图片,并进行展示;
  4. 创建一个13*13的都为1 的数组作为滤波核;
  5. 对图像进行腐蚀处理,并展示结果;

代码实现

# 导入OpenCV、numpy
import cv2
import numpy as np

# 读取图像
img = cv2.imread("../dataset/7.png")
cv2.imshow("original",img)

# 创建13*13的都为1的数组作为核
k = np.ones((13, 13), np.uint8)
# 进行腐蚀操作
dst = cv2.erode(img, k)
cv2.imshow("erode",dst)

cv2.waitKey()
cv2.destroyAllWindows()

请添加图片描述

效果截图

3. 使用腐蚀操作对数字 1 进行处理

  1. code文件夹下创建number_1.py文件;
  2. 导入所需的库,OpenCV、numpy;
  3. 读取dataset文件夹下的1.png图片,并进行展示;
  4. 创建一个13*13的都为1 的数组作为滤波核;
  5. 对图像进行腐蚀处理,并展示结果;

代码实现

# 导入OpenCV、numpy
import cv2
import numpy as np

# 读取图像
img = cv2.imread("../dataset/1.png")
cv2.imshow("original",img)

# 创建13*13的都为1的数组作为核
k = np.ones((13, 13), np.uint8)
# 进行腐蚀操作
dst = cv2.erode(img, k)
cv2.imshow("erode",dst)

cv2.waitKey()
cv2.destroyAllWindows()

请添加图片描述

效果截图

经过腐蚀操作之后,图像的笔迹明显变细,数字的结构特征也更为明显,更有助于后续的处理和识别。

点击下载源码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/566360.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2019下半年上午题

2019下半年上午题 b 选a c 最后统一单位 计算需要多少片芯片: 流水线: 也就是: 对于这一道题: c ssl:安全套接层 https:安全通道 PGP:电子邮件加密 d b a b b 受委托方和委…

WWDC2023|苹果已邀请多家VR/AR领域媒体,有望推出首款头显设备

据9to5mac报道,苹果已邀请多位VR/AR领域的记者和创作者参加今年WWDC开发者大会,其中包括UploadVR编辑Ian Hamilton、经常测试AR/VR产品的Norman Chan等,这表明苹果有望推出该领域的相关产品和服务,例如首款VR/AR头显。 根据此前…

动态规划-树形DP

树的重心 题目 链接:https://www.acwing.com/problem/content/848/ 给定一颗树,树中包含 n n n 个结点(编号 1 ∼ n 1 \sim n 1∼n)和 n − 1 n-1 n−1 条无向边。 请你找到树的重心,并输出将重心删除后&#x…

免费使用GPT4.0?搭载多模态的全新New Bing开放使用教程

目录 1 微软发布新必应2 支持文本生成图像3 支持多模态回答4 历史记录和回答导出5 支持插件化导入 1 微软发布新必应 5月4日,微软基于ChatGPT的搜索引擎New Bing发布了一次大规模更新,并宣布已开放给所有用户,现在无需再排队等待&#xff0c…

实力上榜!ONES 荣获深圳市「专精特新」企业认定

近日,ONES 成功入选 2022 年深圳市专精特新中小企业名单,这标志着 ONES 在研发管理领域专业化、企业数字化程度、质量管理水平、研发创新水平等多个方面得到充分认可和肯定。 深圳市专精特新企业评选是以工业和信息化部、国家统计局、国家发展改革委、财…

Live800:客服系统知识库建设中需要注意的三个要点

互联网的快速发展,让客服行业也随之发生着巨大的变化。传统的客服方式越来越难以满足人们的需求,客户对客服的要求也变得越来越高。在这种情况下,客服系统成为了一种必不可少的工具。 客服系统作为企业与客户沟通的重要渠道,其之所…

聚观早报 | 微软Build开发者大会开幕;阿里云智能裁员7%

今日要闻:微软Build开发者大会开幕;阿里云智能裁员7%;亚马逊中国宣布停止应用商店服务;苹果汽车项目启动已近10年;阿迪达斯中国将重新出售YEEZY系列 微软Build开发者大会开幕 5 月 24 日消息,继两周之前谷…

linux怎么重置密码,CentOS忘记密码,怎么重置密码

1、打开虚拟机 2、在这个界面按 e 进入到这个界面 3、下滑到这个地方,添加这部分代码 init/bin/sh (手动输入,虚拟机算是另一台电脑,复制不过去的) 4、填写完成后按 ctrlx 引导启动 5、输入 mount -o remount, rw / 输入 passwd xxx PS…

Jenkins+GitLab+Docker搭建前端自动化构建镜像容器部署(无本地证书,映射证书)

前言 🚀 需提前安装环境及知识点: 1、Docker搭建及基础操作 2、DockerFile文件描述 3、Jenkins搭建及基础点 🚀 目的: 将我们的前端项目打包成一个镜像容器并自动发布部署,可供随时pull访问 一、手动部署镜像及容器 1…

Blazor实战——Known框架增删改查导

本章介绍学习增、删、改、查、导功能如何实现,下面以商品资料作为示例,该业务栏位如下: 类型、编码、名称、规格、单位、库存下限、库存上限、备注 1. 前后端共用 1.1. 创建实体类 在KIMS项目Entities文件夹下创建KmGoods实体类该类继承Ent…

一个程序最多能占用的内存大小

因为内存资源总是稀缺的,即便在拥有百 G 内存的机器上,我们都可以轻易把内存填满。为了解决这个问题,就需要用到虚拟化技术。 GC 是面试的高频重点知识,同时也是程序员日常开发需要理解的部分。学习 GC 有助于你优化你开发应用的性…

1分钟用上ChatGPT,国内用户福音

众所周知的原因,要想在国内使用ChatGPT,肯定是要“折腾一番”的。 但是对于绝大多数普通小白,有没有比较容易的方法就用上官方的ChatGPT呢? 是可以的 最简单的方法就是调用OpenAI官方的API接口 就可以用“曲线救国”的方式用上…

免费部署你的私人 ChatGPT 网页应用

免费部署你的私人 ChatGPT 网页应用 1、注册Github账号,拷贝仓库 第一步、打开GitHub官网,点击右上角Sign up注册即可 第二步、打开开源项目【Chatgpt-next-web】,点击fork,点击Create fork完成操作 2、选择免费的容器【vercel】或者【r…

AI新晋“顶流”ChatGPT将对财务数字化带来哪些影响?

近期ChatGPT持续火热,2个月内,成为最快达成月活超过1亿的现象级应用。无论是科研人员、技术人员还是普通大众都对此非常关注,并惊讶于它强大的对话能力,ChatGPT也在国内持续霸榜热搜,成为大家茶余饭后的热点话题。毫无…

Mentor Pads中的关键技巧和工作方法

凡是从事电子设计的PCB工程师,都会知道在PCB设计工作中提高效率和质量的重要性,只有合理运用EDA软件的关键技巧和工作方法,可加速PCB设计流程,降低错误率,确保项目的成功交付。本文将以Mentor Pads软件为例&#xff0c…

Qt5安装及组件选择(Qt 5.12)

Qt5安装及组件选择(Qt 5.12.0) 如下图所示,安装Qt时有选择组件这一步,全部安装未免太占磁盘控件,只需安装我们所需要的组件即可。接下来就分析分析各个组件的作用及含义。 “Qt 5.12.0”节点下面是 Qt 的功能模块&a…

红黑树封装set和map(插入部分)

文章目录 前言1.设计大致思路2.改造封装红黑树1.插入节点2.迭代器的实现 3.map和set的封装1.代码实现2.简单测试 前言 之前我们实现了红黑树的插入的部分,本文主要介绍将之前实现的红黑树封装成map和set。我们是以学习的角度来封装容器,不用非要把库中容…

FPGA采集CameraLink相机Base模式解码输出,附带工程源码和技术支持

目录 1、前言2、CameraLink协议基础3、目前我已有的CameraLink收发工程4、设计方案输入CameraLink相机LVDS视频解码视频缓存视频输出软件配置 5、vivado工程详解6、上板调试验证7、福利:工程代码的获取 1、前言 FPGA实现CameraLink视频编解码目前有两种方案&#x…

华为OD机试真题 Java 实现【分界线】【2023Q1 100分】

一、题目描述 电视剧《分界线》里面有一个片段,男主为了向警察透露案件细节,且不暴露自己,于是将报刊上的字剪切下来,剪拼成匿名信。现在有一名举报人,希望借鉴这种手段,使用英文报刊完成举报操作。 但为…

day15 - 使用图像金字塔进行图像拼接

在我们之前的学习过程中,使用的都是恒定大小的图像,但是在某些情况下,我们需要使用不同分辨率的(相同)图像。例如,当在图像中搜索某些东西(例如人脸)时,我们不确定对象将…