第一个最大的图片是当前要标注的类别,接下来的两个图片是对接下来会出现的图片的预览(方便连续点好几个)。分类之后的会保存到和按钮名字一样的文件夹里面,如果文件夹不存在就会自动新建一个(makedirs)。如果中断了标注,可以修改代码中的self.idx属性,从某个位置开始。

视频效果:https://www.bilibili.com/video/av37885740

接下来是代码:

from PyQt5.QtWidgets import QApplication,QPushButton,QLabel,QMainWindow
from PyQt5.QtGui import QFont,QPixmap
import sys,os
import shutildef copyfile(srcfile, dstfile):#用来复制文件,源文件会保留if not os.path.isfile(srcfile):print("%s not exist!" % srcfile)else:f_path, f_name = os.path.split(dstfile)  # 分离文件名和路径if not os.path.exists(f_path):os.makedirs(f_path)  # 创建路径shutil.copyfile(srcfile, dstfile)  # 复制文件print("copy %s -> %s" % (srcfile, dstfile))
class mainForm(QMainWindow):def __init__(self):super(mainForm, self).__init__()self.img_path="faces/" #文件夹和py文件要再同一个目录下面self.img_list=os.listdir(self.img_path) #获取目录下的所有文件self.idx=0#可以改这里,选择程序运行的时候第一个显示的图片是哪一个self.initUI()self.show()def initUI(self):font=QFont()font.setPixelSize(20)#新建一个字体控件self.setWindowTitle("label_me")#设置窗体的标题self.setGeometry(0,0,900,600)#位置和大小button_list=["Chandler","Phoebe","Joey","Monica","Rachel","Ross","Others","Thing",]#这里是显示的按钮们,也是可能的类别数for idx, label_name in enumerate(button_list):button=QPushButton(label_name,self)button.move(idx*110+20,500)button.setFont(font)button.setFixedHeight(35)button.clicked.connect(self.classify)#动态控件绑定同一个事件,根据事件的sender判断是哪个按钮按下self.lbl_list=[]#存放显示图片的label 的listfor i in range(self.get_remainder()):self.pix = QPixmap(self.img_path+self.img_list[self.idx+i])label_img = QLabel(self)label_img.setGeometry(360*i+10, 400-100*(3-i)+40, 100*(3-i)+40,100*(3-i)+40)label_img.setStyleSheet("border:2px solid red")label_img.setPixmap(self.pix)#设置label控件要显示的图片label_img.setScaledContents(True)self.lbl_list.append(label_img)def get_remainder(self):#打算是要显示3个label图片,如果是到了最后,显示不了那么多了。r=len(self.img_list)-self.idxif r>3:r=3return rdef clear_lbls(self):#最后的时候会用到,不显示某些labelfor i in range(len(self.lbl_list)):self.lbl_list[i].hide()def classify(self):sender = self.sender()dir_path=sender.text()+"/"#获取按钮的text属性current_img_path=self.img_list[self.idx]#获取刚刚被分类的图片的路径copyfile(self.img_path+current_img_path , dir_path+current_img_path)self.idx +=1#下一个图片img_full_path = [self.img_path + self.img_list[self.idx + i]   for i in range(self.get_remainder())]self.clear_lbls()for i in range(self.get_remainder()):pix = QPixmap(img_full_path[i])self.lbl_list[i].setPixmap(pix)self.lbl_list[i].show()self.setWindowTitle("当前是第 %d 个图片"%self.idx)app=QApplication(sys.argv)
f=mainForm()
sys.exit(app.exec())

如果有什么需要完善的地方,请提出。

PyQt5制作简单的 数据标注 工具(分类用)相关推荐

  1. python数据标注工具_python实现简单图片物体标注工具

    本文实例为大家分享了python实现简单图片物体标注工具的具体代码,供大家参考,具体内容如下 # coding: utf-8 """ 物体检测标注小工具 基本思路: 对要 ...

  2. 图像/视频数据标注工具

    十个最常用深度学习图像/视频数据标注工具 原创: gloomyfish OpenCV学堂 从此以后图像与视频数据标注不用为找工具发愁!好东西记得分享 图像数据标注概述 在深度学习领域,训练数据对训练结 ...

  3. 分割 标注数据_7种常用的数据标注工具

    工欲善其事,必先利其器. 标注工具是数据标注行业的基础,一款好用的标注工具是提升标注效率与产出高质量标注数据的关键. 常用的数据标注工具主要有以下几种:2D框.语义分割.多边形分割.点标注.线标注.视 ...

  4. 使用Python实现简易的数据标注工具

    使用Python实现简易的数据标注工具 以增加工作效率为目的,最近一直在着手构建一个AI ToolBox 这两天,我为其中的预处理工具目录添加了数据标注模块,本文所介绍内容的代码见这里 该数据标注模块 ...

  5. 深度学习半自动标注_时下流行的深度学习数据标注工具

    时下流行的深度学习数据标注工具 迷若烟雨 2018-09-04 16:36:00 15820 收藏 33 分类专栏: 深度学习 版权 本文将标注工具适用的最佳运行环境分成了三类. 跨平台 https: ...

  6. 语音数据标注工具与平台/公司

    最近在做语音深度学习的项目,整理了一下语音数据标注工具和语音标注平台,供大家参考 语音标注工具--Praat Praat是目前已经成为比较流行也比较专业的语音处理的软件,可以进行语音数据标注.语音录制 ...

  7. 数据标注丨7大数据标注工具分享

    "随着人工智能技术的发展,越来越多的公司和团队加入了此领域的研究,那么人工智能指的是什么呢?" "人工智能"看似给人深不可测.迷离惝恍的感觉,但实际上人工智能的 ...

  8. 数据标注工具labeling与labelme

    数据标注工具 labeling 这款工具是全图形界面,用Python和Qt写的,可把标注信息直接转化成为XML文件 1)下载安装 安装PyQt5包 下载labelImg源码并解压运行-https:// ...

  9. 用python画画简单代码_Python3使用PyQt5制作简单的画板/手写板实例

    1.前言 版本:Python3.6.1 + PyQt5 写一个程序的时候需要用到画板/手写板,只需要最简单的那种.原以为网上到处都是,结果找了好几天,都没有找到想要的结果. 网上的要么是非python ...

最新文章

  1. 【Spring】基于注解的IOC案例
  2. 让AI训练AI,阿里和浙大的“AI训练师助手”是这样炼成的
  3. 2020年10月GitHub上最热门的开源项目
  4. python画轨迹曲线-matplotlib绘制随机行走轨迹图
  5. 基于区块链的健康链系统设计与实现(2)区块链平台Web服务器
  6. WindowsPhone8可缩放图片控件的实现
  7. 基于ASP.NET MVC(C#)和Quartz.Net组件实现的定时执行任务调度
  8. RedHat Linux 加入域
  9. linux服务器知识学习:linux系统centos7国内镜像下载地址
  10. linux mysql查看所有表_Linux之系统操作命令
  11. Blue Jeans - POJ 3080(多串的共同子串)
  12. 使用ACR122U和Proxmark3复制IC卡
  13. 百度、谷歌高德等网络地图经纬度偏差纠正以及相关坐标系问题
  14. SSH攻击ip列表【不定时更新】
  15. 数字电路-逻辑式化简公式
  16. (转)2016年对冲基金经理“封神榜”
  17. A_A03_005 STM32程序J-LINK下载
  18. 服务器c盘logs文件夹,Win10系统Logs文件夹有什么作用Logs文件夹可以删除吗
  19. 牛逼了,用Python破解wifi密码
  20. Rxjava +Retrofit 你需要掌握的几个技巧,Retrofit缓存,RxJava封装,统一对有无网络处理,异常处理, 返回结果问题

热门文章

  1. 现代管理学(自考)-简答论述题
  2. 启动Tomcat报错org.hibernate.cfg.Environment.clinit HHH000206: hibernate.properties not found
  3. 汽车理论matlab编程,汽车理论课后作业matlab编程详解带注释[10页]
  4. linux下如何卸载系统软件,教你在Linux下如何卸载软件
  5. 提取文件内容需要什么工具?
  6. Servlet 动态Web项目-eclipse中,添加新servlet选择Tomcat无法下一步、无法启动Tomcat
  7. BAT高级架构师合力熬夜15天,肝出了这份PDF版《Android百大框架源码解析》,还不快快码住。。。
  8. ARM指令集历史V1-V8
  9. 007 矩阵的秩定义、秩求法、秩的性质
  10. mallat算法分析及c语言实现,一种基于Mallat算法提高小波包分解速度的方法与流程...