Python编写一个验证码图片数据标注GUI程序附源码

yizhihongxing

本文主要介绍如何使用Python编写一个验证码图片数据标注GUI程序,并提供源码。

1. 程序简介

该程序基于Python-Tkinter模块开发,用于标注验证码图片的各个字符。通过该程序,用户可以打开待标注的验证码图片文件,并使用鼠标框选每个字符并标注其所属类别。标注完成后,程序将自动保存标注后的图片,并生成标注结果文件。

2. 开发环境

本示例程序的开发环境如下:

  • Python 3.6.5
  • Tkinter 8.6

3. 程序实现

代码实现及注释如下:

import tkinter as tk
from tkinter import ttk
from tkinter import filedialog
from PIL import Image, ImageTk

class App:
    def __init__(self, master):
        self.master = master
        self.master.title("验证码标注工具")

        # 初始化变量
        self.filePath = ""
        self.labels = []

        # 定义GUI布局
        self.createLayout()

    def createLayout(self):
        # 选择文件按钮
        self.selectButton = ttk.Button(self.master, text="选择文件", command=self.selectFile)
        self.selectButton.grid(row=0, column=0, padx=10, pady=10, sticky="w")

        # 文件路径显示标签
        self.filePathLabel = ttk.Label(self.master, text="文件路径:")
        self.filePathLabel.grid(row=1, column=0, padx=10, pady=10, sticky="w")
        self.filePathValueLabel = ttk.Label(self.master, text=self.filePath)
        self.filePathValueLabel.grid(row=1, column=1, padx=10, pady=10, sticky="w")

        # 图片显示区域
        self.imageCanvas = tk.Canvas(self.master, width=300, height=150)
        self.imageCanvas.grid(row=2, column=0, columnspan=2, padx=10, pady=10)

        # 标签选择下拉框
        self.labelCombo = ttk.Combobox(self.master, state="readonly")
        self.labelCombo.grid(row=3, column=0, padx=10, pady=10)
        self.labelCombo["values"] = ("数字", "字母")

        # 添加标签按钮
        self.addButton = ttk.Button(self.master, text="添加标签", command=self.addLabel)
        self.addButton.grid(row=3, column=1, padx=10, pady=10, sticky="e")

        # 已选择标签列表框
        self.labelListBox = tk.Listbox(self.master, height=5)
        self.labelListBox.grid(row=4, column=0, columnspan=2, padx=10, pady=10)

        # 确定按钮
        self.submitButton = ttk.Button(self.master, text="确定", command=self.submit)
        self.submitButton.grid(row=5, column=1, padx=10, pady=10, sticky="e")

    def selectFile(self):
        # 打开文件选择对话框
        self.filePath = filedialog.askopenfilename()
        self.filePathValueLabel.config(text=self.filePath)

        # 清除标签列表
        self.labelListBox.delete(0, tk.END)

        # 加载图片
        self.img = Image.open(self.filePath)
        self.photoImg = ImageTk.PhotoImage(self.img)
        self.imageCanvas.create_image(150, 75, image=self.photoImg)

    def addLabel(self):
        # 获取下拉框选择的标签值
        label = self.labelCombo.get()

        # 添加到标签列表框中
        if label:
            self.labels.append(label)
            self.labelListBox.insert(tk.END, label)

    def submit(self):
        # 获取标注结果字符串
        resultStr = ""
        for i in range(self.labelListBox.size()):
            resultStr += self.labels[i]

        # 替换原图片文件名中的".jpg"为"_result.jpg",生成标注结果图片的文件名
        resultFilePath = self.filePath.replace(".jpg", "_result.jpg")

        # 保存标注结果图片
        self.img.save(resultFilePath)

        # 生成标注结果文件
        resultFile = open(self.filePath.replace(".jpg", ".txt"), "w")
        resultFile.write(resultStr)
        resultFile.close()

        # 提示标注完成
        tk.messagebox.showinfo("提示", "标注完成!")

# 创建主窗口
root = tk.Tk()
app = App(root)
root.mainloop()

4. 示例说明

示例1:标注一个数字验证码图片

  1. 运行程序。
  2. 点击“选择文件”按钮,打开文件选择对话框,选择一个数字验证码图片文件。
  3. 点击“数字”下拉框,选择“数字”标签。
  4. 点击“添加标签”按钮,将“数字”标签添加到已选择标签列表框中。
  5. 点击“确定”按钮,程序将自动保存标注结果图片和标注结果文件。
  6. 完成标注后,程序将弹出提示框,提示标注完成。

示例2:标注一个字母验证码图片

  1. 运行程序。
  2. 点击“选择文件”按钮,打开文件选择对话框,选择一个字母验证码图片文件。
  3. 点击“字母”下拉框,选择“字母”标签。
  4. 点击“添加标签”按钮,将“字母”标签添加到已选择标签列表框中。
  5. 点击“确定”按钮,程序将自动保存标注结果图片和标注结果文件。
  6. 完成标注后,程序将弹出提示框,提示标注完成。

5. 总结

Python编写一个验证码图片数据标注GUI程序,需要先了解Python-Tkinter模块的基本使用方法。在程序实现过程中,需要结合文件选择、图片加载、标签选择、列表框和保存文件等操作,同时注意GUI布局的合理性和友好性,以实现用户友好的操作界面。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python编写一个验证码图片数据标注GUI程序附源码 - Python技术站

(0)
上一篇 2023年6月13日
下一篇 2023年6月13日

相关文章

  • 用python计算文件的MD5值

    下面是攻略: 1. MD5算法简介 MD5是一种将任意长度的消息压缩到一个128位哈希值的算法。由于该算法不可逆,因此它可以用于数据完整性校验、数字签名等领域。在Python中,我们可以用hashlib模块来计算文件的MD5值。 2. 计算文件的MD5值 2.1 打开文件并计算MD5 第一步是打开文件,可以使用Python的open()函数。接下来,我们需要…

    python 2023年6月2日
    00
  • 详解Python中的内建函数,可迭代对象,迭代器

    详解Python中的内建函数、可迭代对象、迭代器 Python作为一门高级编程语言,提供了很多内建函数、可迭代对象、迭代器等重要概念,下面我们详细讲解它们的用法和作用。 内建函数 Python提供了很多内建函数,这些函数是由Python开发者提供的,使用这些函数可以方便地完成一些基本操作和常用计算。常见的内建函数包括: print(): 打印输出内容到控制台…

    python 2023年5月13日
    00
  • pandas 两列时间相减换算为秒的方法

    下面我将为您详细讲解“pandas 两列时间相减换算为秒的方法”的完整攻略。 首先我们需要使用pandas中的to_datetime方法将时间字符串转换为datetime类型。具体示例代码如下: import pandas as pd df = pd.DataFrame({ ‘start_time’: [‘2022-01-01 00:00:00’, ‘202…

    python 2023年6月2日
    00
  • python中pathlib模块的基本用法与总结

    下面是我对 Python 中 pathlib 模块的基本用法与总结的完整攻略。 什么是 pathlib 模块? pathlib 模块是 Python 3.4 中新加入的标准库,它是一种更加面向对象的路径处理方式。通过 pathlib 模块,我们可以使用更加方便、更加直观的方式来完成路径操作,同时还能够避免在不同操作系统上的路径表达式不同的问题。 pathli…

    python 2023年6月2日
    00
  • python 爬取天气网卫星图片

    Python爬取天气网卫星图片攻略 本文将介绍使用Python爬取天气网卫星图片的完整攻略,包括获取卫星图片的url、下载图片、保存图片等步骤。 获取卫星图片的url 天气网的卫星图片url分为两部分,分别是基础url和时间戳,根据时间戳不同,可以获取不同时间的卫星图片。下面是获取卫星图片url的代码: import time # 获取当前的时间戳 time…

    python 2023年6月2日
    00
  • Python比较配置文件的方法实例详解

    下面是关于“Python比较配置文件的方法实例详解”的完整攻略。 什么是配置文件? 配置文件是一种文本文件,用于存放程序设置和参数信息。通常以键值对的形式组织,每个键值对表示一个配置项,其中键表示该配置项的名称,值表示该配置项的取值。配置文件常用于保存各种常量、默认值、选项等参数信息,便于程序在不同情况下进行设置和调整。 为什么要比较配置文件? 在软件开发中…

    python 2023年6月3日
    00
  • 如何使用Python获取MySQL中表中的平均值和总和?

    要使用Python获取MySQL中表中的平均值和总和,可以使用Python的内置模块sqlite3或第三方库mysql-connector-python。以下是使用mysql-connector-python在MySQL中获取表中的平均值和总和完整攻略: 连接 要连接到MySQL,需要提供MySQL的主机、用户名、和密码。可以使用以下代码连接: mysql.…

    python 2023年5月12日
    00
  • python基本数据类型练习题

    下面是关于“Python基本数据类型练习题”的完整攻略: 1.背景介绍 Python是一种高级编程语言,非常适合初学者入门。在Python中,数据类型是程序中最基本的元素之一,了解和掌握Python基本数据类型对于进一步学习和开发而言都是非常重要的。因此,掌握基本数据类型的练习题目,可以帮助学习者更深入、更全面的理解Python基础知识。 2.练习题目 以下…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部