一.主窗口
#创建主窗口
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()
我们的整体页面如下图:
**
- 更多的功能展示,我将在下周为大家进行展示解析!!
**