基于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,一经查实,立即删除!

相关文章

计算机网络知识点(七)

目录 一、简述浏览器从输入URL到展现页面的全过程 二、简述HTTP和HTTPS的区别 1、HTTP 2、HTTPS 3、区别 三、简述HTTP中的referer头的作用 1、HTTP referer是header的一部分。 2、防盗链 3、防止恶意请求 4、空Referer 5、防御CSRF 四、简述HTTP的方法有哪些 1、…

[大师C语言(第三十四篇)]C语言文件操作背后的技术

C语言提供了一系列标准库函数来处理文件操作,包括文件的打开、读写、关闭等。这些函数使得开发者能够方便地与文件系统交互,进行数据的存储和检索。本文将深入探讨C语言文件操作背后的技术,并通过详细的代码示例来展示这些技术的实际应用。 …

Goroutine和协程的区别

线程 定义:线程是操作系统管理的基本执行单元,一个进程可以包含多个线程。重量级:线程是重量级的操作系统资源,创建和销毁线程的开销较大。内存消耗:每个线程有独立的栈空间(通常为几MB)&#…

WHAT - React 学习系列(一)

官方文档 If you have a lot of HTML to port to JSX, you can use an online converter. You’ll get two things from useState: the current state (count), and the function that lets you update it (setCount). To “remember” things, components use state.To mak…

淘宝卖家为啥不退差价怎么回事 淘宝客服不退差价

今天给各位分享淘宝卖家为啥不退差价怎么回事的知识,其中也会对淘宝客服不退差价进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧! [1] 拼多多商家不给差价怎么办 首先大家要跟商家进行商量&#…

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

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

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

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

c++常考笔记

一 什么是深拷贝,什么是浅拷贝?c 浅拷贝(Shallow Copy) 浅拷贝在C中是默认的复制方式,它复制对象的所有成员变量,但对于指针成员变量,仅复制指针的值(即指向的地址)&am…

IPython的使用技巧

1、解释说明 IPython是一个强大的Python交互式shell,它提供了丰富的功能,如自动补全、历史记录、内置帮助等。IPython使得在命令行下编写和测试Python代码变得更加方便和高效。 2、使用示例 安装IPython: pip install ipython启动IPython…

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

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

LeetCode 热题100 --哈希

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

深度神经网络:开启人工智能的新篇章

在人工智能的浩瀚星空中,深度神经网络(Deep Neural Networks, DNNs)无疑是那颗最为璀璨夺目的星辰。自2006年深度学习的概念被重新发掘以来,深度神经网络凭借其强大的模式识别能力和卓越的数据处理效率,引领了人工智能…

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

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

MATLAB 中,fopen 和 fgetl 函数用于文件操作

逐行读文件内容 fopen 和 fgetl 读结构体 在 MATLAB 中,fopen 和 fgetl函数用于文件操作。 fopen 用于打开一个文件并返回一个文件标识符,而 fgetl 用于从该文件中读取一行文本。 对于 MATLAB R2018b 版本,这些函数的用法没有显著变化&a…

使用 BroadcastChannel 进行跨页面通信

在现代 Web 应用程序中,有时候我们需要在不同的页面之间进行通信,例如在一个页面上的操作需要更新另一个页面上的内容。这时候,BroadcastChannel 可以成为一个非常有用的工具。BroadcastChannel 允许我们在不同的浏览器标签页或者不同的窗口之…

哈尔滨高校哪些系统需要做等保

高校需要进行等保的系统类别 高校的信息系统安全等级保护工作是根据《网络安全法》和相关政策法规要求进行的,目的是保护信息化发展、维护国家信息安全,确保信息系统的安全稳定运行。根据等保2.0标准,高校的信息系统可以分为不同的安全等级&…

Java中的测试驱动开发(TDD)实践

Java中的测试驱动开发(TDD)实践 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 引言 测试驱动开发(TDD)是一种…

分享: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…