Mathorcup 甲骨文识别

本资源主要包含第2-4问,第一问直接使用传统图像处理即可,需要有很多步骤,这一步大家自己写就行。

2 第2问,甲骨文识别

2.1 先处理源文件

原文件有jpg和json文件,都在一个文件夹下,需要对json文件进行处理,主要是将其转换为yolov8所使用的格式,大体代码如下所示:

# 详情加q 596520206
def convert(height, width, box):dw = 1. / (width)dh = 1. / (height)x = (box[0] + box[2]) / 2.0 - 1y = (box[1] + box[3]) / 2.0 - 1w = box[2] - box[0]h = box[3] - box[1]x = x * dww = w * dwy = y * dhh = h * dhreturn x, y, w, h

2.2 划分训练集和测试集

处理完之后,所有的图片分为两个文件夹,一个是图片,一个是标签,但是需要划分为训练集和测试集,代码如下:

for file in train_files:shutil.copy(file, os.path.join(train_images_folder, os.path.basename(file)))for file in val_files:shutil.copy(file, os.path.join(val_images_folder, os.path.basename(file)))# 复制对应的标签文件到相应的文件夹中
for file in train_files:label_file = os.path.join(labels_folder, os.path.splitext(os.path.basename(file))[0] + '.txt')if os.path.exists(label_file):shutil.copy(label_file, os.path.join(train_labels_folder, os.path.basename(label_file)))

处理完之后的图片
在这里插入图片描述

2.3 训练和验证模型

配置好data.yaml文件,即可训练和验证,中间截图如下:
会发现大多数的都能展示出来
在这里插入图片描述
在这里插入图片描述

3 第3问,对给定的文件进行识别

注意,有的图片是单通道,需要转换为3通道,如图所示:

 if len(img.shape) == 2:# 处理单通道图像# 创建一个全零的三通道图像height, width = img.shapecolor_image = np.zeros((height, width, 3), dtype=np.uint8)# 复制单通道图像到每个通道color_image[:, :, 0] = img  # 将灰度图像复制到蓝色通道color_image[:, :, 1] = img  # 将灰度图像复制到绿色通道color_image[:, :, 2] = img  # 将灰度图像复制到红色通道img = color_image

在这里插入图片描述

第3问对图片进行检测例子:
在这里插入图片描述

4 第4问

这问要先搭建一个分类模型,单独训练这个模型,然后将第2问检测的图片截图,放入到这个模型进行预测,结果如下所示:
在这里插入图片描述
在这里插入图片描述

    for xyxy, label in zip(xyxy_all,predict_label_all):x0 = xyxy[0]y0 = xyxy[1]x1 = xyxy[2]y1 = xyxy[3]color  = (0, 255, 0)  # 矩形的颜色,这里是绿色draw.rectangle([(x0, y0), (x1,y1)], outline=color)draw.text((x0, y0-30), label, (255, 0, 0), font=font)cv2charimg = cv2.cvtColor(np.array(pilimg), cv2.COLOR_RGB2BGR)cv2.imwrite(os.path.join(out_file_path, image_name), cv2charimg)
通过代码发现有些能识别处理,Q 596520206

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows环境下删除MySQL

文章目录 一、关闭MySQL服务1、winR打开运行,输入services.msc回车2、服务里找到MySQL并停止 二、卸载MySQL软件1、打开控制模板--卸载程序--卸载MySQL相关的所有组件 三、删除MySQL在物理硬盘上的所有文件1、删除MySQL的安装目录(默认在C盘下的Program …

各省份自然灾害损失情况数据集(2004-2022年)

01、数据简介 自然灾害是指给人类生存带来危害或损害人类生活环境的自然现象,这些现象是地球演化过程的自然现象。它们主要包括气象灾害、地质灾害、海洋灾害、生物灾害、森林草原火灾等五大类。 具体来说,气象灾害包括干旱、洪涝灾害、台风、风雹、低…

每日OJ题_01背包④_力扣1049. 最后一块石头的重量 II

目录 力扣1049. 最后一块石头的重量 II 问题解析 解析代码 滚动数组优化代码 力扣1049. 最后一块石头的重量 II 1049. 最后一块石头的重量 II 有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合,从中选出任意…

斐尔玫瑰荣获《中国3.15诚信企业》证书,诚信经营赢得社会认可

2024年,斐尔玫瑰,荣获了备受瞩目的《中国3.15诚信企业》证书。这一荣誉的获得,不仅是对斐尔玫瑰长期以来坚持诚信经营、提供优质产品和服务的肯定,更是对其在消费者心目中建立起的良好信誉和口碑的认可。 斐尔玫瑰作为女性私密护…

CSS盒模型(详讲)

目录 概述: 内容区(content): 内边距(paddingj): 前言: 设置内边距: 边框(border): 前言: 示例: 外边…

vivado ila 运行触发器、停止触发器、使用自动重新触发

运行触发器 您可在 2 种不同模式下运行或装备 ILA 核触发器 : • “ Run Trigger ” : 选择要装备的 ILA 核 , 然后单击“ ILA 仪表板 (ILA Dashboard) ”窗口或“硬件 (Hardware) ”窗口 工具栏上的“ Run Trigger ”按钮即可装备 IL…

JVM、maven、Nexus

一、jvm简介 1.应用程序申请内存时出现的三种情况: ①OOM:内存溢出,是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于能提供的最大内存。此时程序就运行不了,系统会提示内存溢出&#xff0c…

JavaSE-13笔记【集合2(+2024新)】

文章目录 3.Map3.1 Map继承结构3.2 Map接口的常用方法3.3 遍历Map3.4 HashMap集合3.4.1 HashMap集合key的特点3.4.2 HashMap集合的key存储自定义类型3.4.3 哈希表3.4.3.1 哈希表的介绍3.4.3.2 哈希表的存储原理 3.4.4 存放在HashMap和HashSet集合key部分的元素必须同时重写hash…

C语言指针进阶:数组与指针的联系

目录 1. 数组名的本质2. 使用指针访问数组3. 一维数组传参的本质4. 二级指针5. 指针数组5.1 指针数组模拟二维数组 正文开始。 1. 数组名的本质 数组名代表着这个数组中第一个元素的地址 例如: int arr[4] { 1,2,3,4 }; int *p1 &arr[0]; int *p2 arr;上述…

步骤大全:网站建设3个基本流程详解

一.领取一个免费域名和SSL证书,和CDN 1.打开网站链接:https://www.rainyun.com/z22_ 2.在网站主页上,您会看到一个"登陆/注册"的选项。 3.点击"登陆/注册",然后选择"微信登录"选项。 4.使用您的…

matlab使用教程(43)—二维曲线图绘制的基本方法

这个博客创建一个简单的曲线图并修改横纵坐标。通过更改线条颜色、线型和添加标记来自定义线图的外观。 1.创建曲线图 使用 plot 函数创建二维曲线图。例如,绘制从 0 到 2 π 之间的正弦函数值,并修改横纵坐标,添加图形标题。 x linspace…

unity android 打包

现在使用的unity版本hub不支持导入support,只能自己下载对应的支持 找到对应的sdk,ndk