基于AI技术的车型识别系统---功能页面

一.主窗口

#创建主窗口
window = tk.Tk()
window.title("图像目标检测系统")
window.geometry('1400x700')  # 设置窗口大小

1.1画布的宽度为1400像素,高度为700像素,画布是放置在window中

#创建背景画布并使用grid布局管理器
canvas_background = tk.Canvas(window, width=1400, height=700)

1.2确定画布在窗口中的位置

row=0和column=0表示画布放置在网格的第一行第一列
columnspan=2表示画布会横跨两列,rowspan=4表示画布会纵跨四行,因此画布会占据较大的空间
sticky='nsew’参数意味着画布会贴着其网格单元格的四个方向,这样当窗口大小改变时,画布会随之伸展以填充

canvas_background.grid(row=0, column=0, columnspan=2, rowspan=4, sticky='nsew')  # 使用grid管理器

1.3打开图片

image = Image.open(r"ttbb\background.jpg")

1.4转换图像模式为RGB

image = image.convert("RGB")
draw = ImageDraw.Draw(image)

1.5定义要画的文字和位置

text = "待检测的图片:"
position = (440, 190)  # 文字的左上角位置坐标

1.6定义字体和字号

1.6.1 SourceHanSansSC-Bold.otf是从网上下载的一种字体

font = ImageFont.truetype("SourceHanSansSC-Bold.otf", 30)  # 使用字体,字号30

1.6.2画文字

参数1:文字的位置;参数2:文本内容;参数3:文本颜色为黑色

draw.text(position, text, fill=(0, 0, 0), font=font)  # fill参数为文字颜色

1.6.3画第二个文字

text2 = "检测结果:"
position = (1180, 190)  # 文字的左上角位置坐标
#定义字体和字号
font = ImageFont.truetype("SourceHanSansSC-Bold.otf", 30)  # 使用字体,字号30
#画文字
draw.text(position, text2, fill=(0, 0, 0), font=font)  # fill参数为文字颜色

1.6.4画第三个文字

text3 = "基于深度学习车型检测的关键算法设计"
position = (580, 10)  # 文字的左上角位置坐标
#定义字体和字号
font = ImageFont.truetype("SourceHanSansSC-Bold.otf", 50)  # 使用字体,字号30
#画文字
draw.text(position, text3, fill=(0, 0, 0), font=font)  # fill参数为文字颜色

1.6.5画第四个文字

text4 = "功能区"
position = (100, 135)
#定义字体和字号
font = ImageFont.truetype("SourceHanSansSC-Bold.otf", 30)  # 使用字体,字号30
#画文字
draw.text(position, text4, fill=(0, 0, 0), font=font)  # fill参数为文字颜色

1.6.6对按钮区域画线框起来

draw.line((12, 157, 91, 157), fill='black',width=3)
draw.line((12, 157, 12, 600), fill='black',width=3)
draw.line((12, 600, 285, 600), fill='black',width=3)
draw.line((285, 600, 285, 157), fill='black',width=3)
draw.line((285, 157, 192, 157), fill='black',width=3)

1.7在加载背景前画线,实现更新图片后 线条还在

#加载背景图像
background_image = image
background_image = background_image.resize((1400, 700), Image.Resampling.LANCZOS)  # 调整图像大小以适应窗口

Image.Resampling.LANCZOS:当需要对图像进行缩放、旋转或其他形式的变换时,可以使用这个滤波器来控制图像的采样质量

1.8转换为可以在TK窗口显示的图像

background_photo = ImageTk.PhotoImage(background_image)

1.9在背景画布上绘制背景图像

(0,0)表示背景图片从左上角顶点开始放置图像
anchor='nw’表示图像的这个点(西北角)将被放置在坐标(0, 0)上
image=background_photo指定了要显示的图像

canvas_background.create_image(0, 0, anchor='nw', image=background_photo)
canvas_background.image = background_photo  # 为了保持对图像的引用

1.10创建两个画布区域

设置画布的宽度,高度,以及背景颜色

canvas_left = tk.Canvas(window, width=500, height=400, bg="#e6f2ff")
canvas_right = tk.Canvas(window, width=500, height=400, bg="#e6f2ff")

1.11将两个画布区域放置在主窗口中

canvas_left.place(x=325, y=200)
canvas_right.place(x=865, y=200)

1.12创建按钮并放置在主窗口上

设置其放在窗口上,文本为’上传图片’,字体大小为14,连接的函数为加载图像的函数

button_upload = tk.Button(window, width=13, text='上传图片', font=14, command=upload_image)
button_start_detection = tk.Button(window, width=13, text='开始检测', font=14, command=start_detection)
img_intensification = tk.Button(window, width=13, text='图像增强', font=14, command=img_inten)

1.12.1将按钮放置在主窗口上

button_upload.place(x=35, y=170)
button_start_detection.place(x=35, y=230)
img_intensification.place(x=35, y=290)#运行主窗口
window.mainloop()

我们的整体页面如下图:
在这里插入图片描述
**

  • 更多的功能展示,我将在下周为大家进行展示解析!!

**

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

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

相关文章

LVS(Linux Virtual Server)集群,(1)NAT模式

Cluster:集群,为了解决某个特定问题将多台计算机组合起来形成的单个系统。 集群分为三种类型: LB(Load Balancing),负载均衡,多个主机组成,每个主机只承担一部分访问请求 HA(High Availiablity)&#xf…

洛杉矶裸机云服务器怎么用

洛杉矶裸机云服务器是一种结合了物理服务器性能和云服务灵活性的高性能计算服务。它为用户提供了高效、安全的计算和存储能力,特别适合需要大量数据处理和快速响应的应用。具体分析如下,rak部落小编为您整理发布洛杉矶裸机云服务器怎么用。 1. 硬件配置选…

亲测5个电脑浏览器高效技巧,保证让你搜索效率倍增!

虽然我们每个人的电脑基本每天都会用到浏览器,但你会发现有的人用起浏览器就是噼里啪啦的,找他要个什么网站他都能快速找到,而有的人,经常打开的是广告搜索的网页,找不到搜索的答案非常慢。小编今天就来跟你分享一下我…

LeetCode 热题100 --哈希

哈希 哈希,有限空间映射一个无限的空间。在空间内,有序化进行快速查询。 用空间换时间。 1.两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组…

【面试干货】Java中的访问修饰符与访问级别

【面试干货】Java中的访问修饰符与访问级别 1、public2、protected3、默认(没有访问修饰符)4、private 💖The Begin💖点点关注,收藏不迷路💖 在Java中,访问修饰符用于控制类、变量、方法和构造器…

分享:MoneyPrinterTurbo只需一个视频主题或关键词全自动生成一个高清的短视频

MoneyPrinterTurbo是基于原有的MoneyPrinter项目进行优化和重构后推出的新版本。它利用先进的AI技术,通过用户提供的视频主题或关键词,全自动生成视频文案、素材、字幕以及背景音乐,并最终合成高清的短视频。 功能特性 AI智能文案生成&…

问题解决:Problem exceeding maximum token in azure openai (with java)

问题背景: Im doing a chat that returns queries based on the question you ask it in reference to a specific database. For this I use azure openai and Java in Spring Boot. 我正在开发一个聊天功能,该功能根据您针对特定数据库的提问返回查询…

学习新语言方法总结(一)

随着工作时间越长,单一语言越来越难找工作了,需要不停地学习新语言来适应,总结一下自己学习新语言的方法,这次以GO为例,原来主语言是PHP ,自学GO 了解语言特性,知道他是干嘛的 go语言&#xff0…

Golang | Leetcode Golang题解之第171题Excel列表序号

题目: 题解: func titleToNumber(columnTitle string) (number int) {for i, multiple : len(columnTitle)-1, 1; i > 0; i-- {k : columnTitle[i] - A 1number int(k) * multiplemultiple * 26}return }

怎么添加网页到桌面快捷方式?

推荐用过最棒的学习网站!https://offernow.cn 添加网页到桌面快捷方式? 很简单,仅需要两步,接下来以chrome浏览器为例。 第一步 在想要保存的网页右上角点击设置。 第二步 保存并分享-创建快捷方式,保存到桌面即可…

Docker定位具体占用大量存储的容器

监控告警生产环境的服务器磁盘分区使用率大于90%,进入服务器查看Docker 的 overlay2 存储驱动目录中占用很大,很可能是某个容器一直在打印日志,所以需要定位到是哪个容器,然后进行进一步排查。 然后进入到overlay2中查看是哪个目录…

【第13章】进阶调试思路:如何安装复杂节点IP-Adapter?(安装/复杂报错/节点详情页/精读)ComfyUI基础入门教程

🎈背景 IP-Adapter这个名字,大家可能听说过,可以让生成的结果从参考图中学习人物、画风的一致性,在目前是比较实用的一个节点,广泛的用于照片绘制、电商作图等方面。 但同时,这个节点也是比较难安装的一个节点。 所以,这节课,我们就通过一个案例,来学习如何在Comf…

MySQL----彻底卸载(附带每一步截图)

停止mysql服务 打开任务管理器,点击服务,找到mysql服务,这里我的是MySQL57,找到mysql服务后选中,点击右键选择停止服务 删除mysql服务 winR打开命令框,输入cmd打开cmd控制台或者电脑左下角输入cmd搜索&…

算法导论 总结索引 | 第四部分 第十五章:数据结构的扩张

1、动态规划(dynamic programming)与分治方法相似,都是通过组合子问题的解 来求解原问题 分治方法 将问题划分为互不相交的子问题,递归地求解子问题,再将它们的解组合起来。求出原问题的解 与之相反,动态规…

HarmonyOS角落里的知识:一杯冰美式的时间 -- 之打字机

一、前言 模拟编辑器或者模拟输入框中文字啪啦啪啦输入的效果,往往能够吸引人们的眼球,让用户的注意力聚焦在输入的内容上,本文将和大家探讨打字机效果的实现方式以及应用。Demo基于API12。 二、思路 拆分开来很简单,将字符串拆…

每天写java到期末考试(6.21)--集合4--练习--6.20

练习1&#xff1a; 正常写集合 bool类 代码&#xff1a; import QM_Fx.Student;import java.util.ArrayList;public class test {public static void main(String[] args) {ArrayList<Student> listnew ArrayList<>();//2.创建学生对象Student s1new Student(&quo…

八大经典排序算法

前言 本片博客主要讲解一下八大排序算法的思想和排序的代码 &#x1f493; 个人主页&#xff1a;普通young man-CSDN博客 ⏩ 文章专栏&#xff1a;排序_普通young man的博客-CSDN博客 若有问题 评论区见&#x1f4dd; &#x1f389;欢迎大家点赞&#x1f44d;收藏⭐文章 目录 …

MySQL 面试突击指南:核心知识点解析1

MySQL中有哪些存储引擎? InnoDB存储引擎 InnoDB是MySQL的默认事务型引擎,也是最重要、使用最广泛的存储引擎,设计用于处理大量短期事务。 MyISAM存储引擎 在MySQL 5.1及之前版本,MyISAM是默认的存储引擎。它提供了全文索引、压缩、空间函数(GIS)等特性,但不支持事务和…

【SCAU数据挖掘】数据挖掘期末总复习题库简答题及解析——中

1. 某学校对入学的新生进行性格问卷调查(没有心理学家的参与)&#xff0c;根据学生对问题的回答&#xff0c;把学生的性格分成了8个类别。请说明该数据挖掘任务是属于分类任务还是聚类任务?为什么?并利用该例说明聚类分析和分类分析的异同点。 解答&#xff1a; (a)该数据…

图解Sieve of Eratosthenes(埃拉托斯特尼筛法)算法求解素数个数

1.素数的定义 素数又称质数。质数是指在大于1的自然数中&#xff0c;除了1和它本身以外不再有其他因数的自然数。一个大于1的自然数&#xff0c;除了1和它自身外&#xff0c;不能被其他自然数整除的数叫做质数&#xff1b;否则称为合数&#xff08;规定1既不是质数也不是合数&…