小工具——筛选图像小工具

这篇具有很好参考价值的文章主要介绍了小工具——筛选图像小工具。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近在公司手动筛图片,需要将某些含有检测目标的图像手动筛选出来用于做新模型的测试。我最开始是两个文件夹,来回复制粘贴,后来感觉这种效率太低了,就随手写了一个图像筛查小工具。代码如下:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QVBoxLayout, QWidget, QAction, QFileDialog
from PyQt5.QtGui import QPixmap, QIcon, QImage
from PyQt5.QtCore import Qt, QDir


class ImageViewer(QMainWindow):
    def __init__(self):
        super().__init__()

        self.current_index = 0
        self.image_files = []
        self.input_folder_path = ""
        self.output_folder_path = ""

        self.init_ui()

    def init_ui(self):
        # 创建布局
        layout = QVBoxLayout()

        # 创建标签用于显示图像
        self.image_label = QLabel(self)
        layout.addWidget(self.image_label)

        # 创建主窗口
        main_widget = QWidget()
        main_widget.setLayout(layout)
        self.setCentralWidget(main_widget)

        # 创建菜单栏
        menu_bar = self.menuBar()
        file_menu = menu_bar.addMenu("文件")
        self.open_input_folder_action = QAction("打开导入图像文件夹", self)
        self.open_output_folder_action = QAction("打开保存图像文件夹", self)
        file_menu.addAction(self.open_input_folder_action)
        file_menu.addAction(self.open_output_folder_action)

        # 绑定事件处理函数
        self.open_input_folder_action.triggered.connect(self.open_input_folder)
        self.open_output_folder_action.triggered.connect(self.open_output_folder)

        # 设置窗口属性
        self.setWindowTitle("图像筛查工具")
        self.setGeometry(100, 100, 800, 600)

    def open_input_folder(self):
        # 打开输入文件夹
        folder_path = QFileDialog.getExistingDirectory(self, "选择输入文件夹", QDir.homePath())
        if folder_path:
            self.input_folder_path = folder_path
            self.load_images()

    def open_output_folder(self):
        # 打开输出文件夹
        folder_path = QFileDialog.getExistingDirectory(self, "选择输出文件夹", QDir.homePath())
        if folder_path:
            self.output_folder_path = folder_path

    def load_images(self):
        # 加载文件夹中的图像文件
        self.image_files = QDir(self.input_folder_path).entryList(["*.png", "*.jpg", "*.jpeg"], QDir.Files)
        if self.image_files:
            self.current_index = 0
            self.show_current_image()

    def show_current_image(self):
        # 显示当前图像
        image_path = QDir(self.input_folder_path).filePath(self.image_files[self.current_index])
        image = QImage(image_path)
        if not image.isNull():
            pixmap = QPixmap.fromImage(image)
            self.image_label.setPixmap(pixmap.scaled(self.image_label.size(), Qt.KeepAspectRatio,
                                                     Qt.SmoothTransformation))
            self.setWindowTitle(f"图像筛查工具 - {self.current_index + 1}/{len(self.image_files)}")

    def keyPressEvent(self, event):
        # 键盘事件处理
        if event.key() == Qt.Key_Right:
            # 切换到下一张图像
            if self.current_index < len(self.image_files) - 1:
                self.current_index += 1
                self.show_current_image()
        elif event.key() == Qt.Key_Left:
            # 切换到上一张图像
            if self.current_index > 0:
                self.current_index -= 1
                self.show_current_image()
        elif event.key() == Qt.Key_Space:
            # 保存当前图像到输出文件夹
            if self.current_index < len(self.image_files):
                image_path = QDir(self.input_folder_path).filePath(self.image_files[self.current_index])
                output_path = QDir(self.output_folder_path).filePath(self.image_files[self.current_index])
                QDir().rename(image_path, output_path)
                self.image_files.pop(self.current_index)
                self.show_current_image()


if __name__ == "__main__":
    app = QApplication(sys.argv)
    viewer = ImageViewer()
    viewer.show()
    sys.exit(app.exec_())

首先要选择两个文件夹,一个用来导入数据,另外一个用来保存数据。导入文件夹,文件夹里面有大量图像,点击键盘右键可以切换到下一张,左键上一张,点击空格可以把这个图像保存到另外一个文件夹中。不过到最后一张的时候可能回异常退出,不过不影响使用所以我就没进行改进了。

下面是该工具的效果:

小工具——筛选图像小工具,python

点击2选择源图像文件夹

点击3选择保存文件夹

这里的操作是剪切操作,并非复制操作。

小工具——筛选图像小工具,python

 随便文件夹是保存的文件小工具——筛选图像小工具,python文章来源地址https://www.toymoban.com/news/detail-703800.html

到了这里,关于小工具——筛选图像小工具的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用 OpenCV Python 实现自动图像注释工具的详细步骤--附完整源码

    注释是深度学习项目中最关键的部分。它是模型学习效果的决定因素。然而,这是非常乏味且耗时的。一种解决方案是使用自动图像注释工具,这大大缩短了时间。 本文是pyOpenAnnotate系列的一部分,其中包括以下内容。 1、使用 OpenCV 进行图像注释的路线图。 2、pyOpenAnnotate工

    2024年02月11日
    浏览(42)
  • python opencv+tkinter 使用tkinter实现交互式图像处理工具

    tkinter 基本控件与使用 我们将学习如何使用Tkinter包编写一些图形用户界面程序。Tkinter是Python的一个标准包,因此我们并不需要安装它。我们将从创建一个窗口开始,然后我们在其之上加入一些小组件,比如按钮,复选框等,并使用它们的一些属性。话不多说,让我们开始吧

    2024年02月10日
    浏览(93)
  • 筛选特定内容:Python中筛选DataFrame指定数据列包含特定内容的所有数据行

    筛选特定内容:Python中筛选DataFrame指定数据列包含特定内容的所有数据行 在数据处理和分析中,经常需要对数据进行筛选以便找到我们需要的信息。而在Python中,使用Pandas库中的DataFrame对象可以方便地对数据进行处理和分析。 下面我们来看如何使用contains()函数,筛选DataFr

    2024年02月14日
    浏览(39)
  • python使用布隆过滤器筛选数据

    它是一种独特的数据结构,用以判断:一个数据 可能存在 或 一定不存在 算法思路: 开一个指定长度的数组,将所有的元素值设为0 添加元素时,执行hash,得到多个位置下标,将数组对应位置设置为1 检查元素是否存在时,执行hash,得到多个位置下标,查看数组中对应下标

    2023年04月08日
    浏览(45)
  • python实现Lasso回归分析(特征筛选、建模预测)

    实现功能: python实现Lasso回归分析(特征筛选、建模预测) 输入结构化数据,含有特征以及相应的标签,采用Lasso回归对特征进行分析筛选,并对数据进行建模预测。 实现代码: 实现效果: # 绘制Lambda与回归系数的关系    # 基于最佳的lambda值建模进行特征分析    # 基于

    2023年04月12日
    浏览(45)
  • Python:使用pandas对excel数据筛选选择

    #直接筛选 #DataFrame索引使用[], #直接索引语法:df[] 1.1 直接筛选,选择单列数据:df[\\\"列\\\"] 1.2直接筛选,选择多列数据:df[[\\\"列1\\\",\\\"列2\\\"]](注意:多嵌套列) 1.3直接筛选,选择多行数据:df[2:4]按照位置选取连续的行(切片),前闭后开 #(\\\'----------筛选方式2:条件筛选-------------\\\') #条件筛选

    2024年02月16日
    浏览(57)
  • 特征筛选之特征递归消除法及Python实现

            特征递归消除法(Feature Recursive Elimination,简称RFE)是一种特征选择的算法,它通过反复训练模型,并剔除其中的弱特征,直到达到所需的特征数量。 该算法的步骤如下: 首先,将所有的特征都输入模型,得到模型的性能评价指标(比如准确率、F1得分等)。 然

    2024年02月13日
    浏览(40)
  • opencv 十六 python下各种连通域处理方法(按面积阈值筛选连通域、按面积排序筛选连通域、连通域分割等方法)

    本博文基于python-opencv实现了按照面积阈值筛选连通域、按照面积排序筛选topK连通域、 连通域细化(连通域骨架提取)、连通域分割(基于分水岭算法使连通域在细小处断开)、按照面积排序赛选topK轮廓等常见的连通域处理代码。并将代码封装为shapeUtils类,在自己的python代

    2024年02月04日
    浏览(81)
  • 【python】数据挖掘分析清洗——特征选择(特征筛选)方法汇总

    本文链接:https://blog.csdn.net/weixin_47058355/article/details/130400400?spm=1001.2014.3001.5501 数据挖掘系列: 缺失值处理方法汇总 离散化方法汇总 离群点(异常值)处理方法汇总 标准化(数据归一化)处理方法汇总 特征选择(特征筛选)方法汇总 特征选择筛选(降维)方法汇总 分类预测方法汇

    2024年02月15日
    浏览(52)
  • 用Python做数据分析之数据筛选及分类汇总

    1、按条件筛选(与,或,非) 为数据筛选,使用与,或,非三个条件配合大于,小于和等于对数据进行筛选,并进行计数和求和。与 excel 中的筛选功能和 countifs 和 sumifs 功能相似。 Excel 数据目录下提供了“筛选”功能,用于对数据表按不同的条件进行筛选。Python 中使用

    2024年02月07日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包