如何实现图片的简单整理,按照比例,按照时长来分类,基于PyQt5的GUI实现

1:文件夹有N多视频,如何按照比例进行分类,筛选我们要的比例的视频单独的存放文件夹。
迫不及待的先给出代码。哈哈

demo实例:我只想要文件夹中的720*1280的视频单独存放。

import os
import cv2
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QLineEdit, QPushButton, QMessageBox, QVBoxLayout, QWidget, QFileDialog

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

        self.setWindowTitle('视频宽高比率检测工具')
        self.setGeometry(100, 100, 400, 200)

        self.input_path_label = QLabel('输入文件夹路径:')
        self.input_path_text = QLineEdit()
        self.button_browse = QPushButton('浏览')
        self.button_execute = QPushButton('确认执行')

        layout = QVBoxLayout()
        layout.addWidget(self.input_path_label)
        layout.addWidget(self.input_path_text)
        layout.addWidget(self.button_browse)
        layout.addWidget(self.button_execute)

        self.widget = QWidget()
        self.widget.setLayout(layout)
        self.setCentralWidget(self.widget)

        self.button_browse.clicked.connect(self.browse_folder)
        self.button_execute.clicked.connect(self.execute_check)

    def browse_folder(self):
        folder_path = QFileDialog.getExistingDirectory(self, "选择文件夹")
        self.input_path_text.setText(folder_path)

    def execute_check(self):
        input_folder_path = self.input_path_text.text()
        output_folder = os.path.join(input_folder_path, '72010')
        os.makedirs(output_folder, exist_ok=True)

        video_files = [f for f in os.listdir(input_folder_path) if os.path.isfile(os.path.join(input_folder_path, f))]
        for video_file in video_files:
            video_path = os.path.join(input_folder_path, video_file)
            cap = cv2.VideoCapture(video_path)
            width = cap.get(cv2.CAP_PROP_FRAME_WIDTH)
            height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)
            cap.release()

            if width >= 720 and height >= 1280:
                output_path = os.path.join(output_folder, video_file)
                os.replace(video_path, output_path)

        QMessageBox.information(self, '执行完毕', '视频宽高比率检测完毧')

if __name__ == '__main__':
    app = QApplication([])
    window = VideoRatioChecker()
    window.show()
    app.exec_()

这里我做个简单的说明:

这段代码是一个基于PyQt5的GUI应用程序,它实现了一个简单的视频宽高比检查器。其功能描述如下:

初始化VideoRatioChecker类,继承自QMainWindow,并设置了窗口的基本属性如标题、位置和大小。

在窗口中创建了一系列UI组件,包括一个用于显示提示文本的QLabel(输入文件夹路径)、一个用于输入文件夹路径的QLineEdit、以及两个QPushButton(浏览和确认执行)。

当用户点击“浏览”按钮时,触发browse_folder方法,通过QFileDialog.getExistingDirectory获取用户选择的文件夹路径,并将其显示在输入框中。

当用户点击“确认执行”按钮时,触发execute_check方法。在这个方法中:
    首先读取用户输入的文件夹路径。
    然后,在该路径下创建一个名为'72010'的子文件夹,如果已经存在则不报错。
    接下来,遍历输入文件夹中的所有文件,筛选出视频文件。
    对每个视频文件,使用OpenCV的cv2.VideoCapture打开并获取视频帧的宽度和高度。
    如果视频的宽度大于等于720且高度大于等于1280,则将该视频文件移动至'72010'子文件夹内。

执行完所有视频文件的检查后,弹出一个QMessageBox通知用户视频宽高比检测已完成。

最后,若脚本作为主程序运行,则创建一个QApplication实例,构建VideoRatioChecker类的实例并显示窗口,随后进入消息循环以监听和处理用户的操作。

2:文件夹有N多视频,如何按照播放时长进行分类,筛选我们要的10秒以上的视频单独存放。
先给出代码。

import os
import moviepy.editor as mp
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QLineEdit, QMessageBox, QVBoxLayout, QWidget, QFileDialog

class VideoDurationChecker(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('Video Duration Checker')
        self.setGeometry(100, 100, 300, 200)

        self.input_path_input = QLineEdit(self)
        self.input_path_input.setPlaceholderText('Input Path')

        self.import_button = QPushButton('Import Folder', self)
        self.import_button.clicked.connect(self.import_folder)

        self.execute_button = QPushButton('Execute', self)
        self.execute_button.clicked.connect(self.execute_check)

        layout = QVBoxLayout()
        layout.addWidget(self.input_path_input)
        layout.addWidget(self.import_button)
        layout.addWidget(self.execute_button)

        widget = QWidget()
        widget.setLayout(layout)
        self.setCentralWidget(widget)

    def import_folder(self):
        options = QFileDialog.Options()
        folder_path = QFileDialog.getExistingDirectory(self, "Select Folder")
        self.input_path_input.setText(folder_path)

    def execute_check(self):
        input_folder = self.input_path_input.text()
        output_folder = os.path.join(input_folder, '72010')
        os.makedirs(output_folder, exist_ok=True)

        for file in os.listdir(input_folder):
            if file.endswith('.mp4') or file.endswith('.avi') or file.endswith('.mov'):
                video_path = os.path.join(input_folder, file)
                clip = mp.VideoFileClip(video_path)
                duration = clip.duration
                clip.close()
                if duration >= 10:
                    output_path = os.path.join(output_folder, file)
                    os.rename(video_path, output_path)

        QMessageBox.information(self, 'Execution Complete', 'Video duration check has been executed.')

if __name__ == "__main__":
    app = QApplication([])
    window = VideoDurationChecker()
    window.show()
    app.exec_()

基于PyQt5的GUI应用程序,主要用于检查视频文件的时长。其功能描述如下:

定义一个名为VideoDurationChecker的类,继承自QMainWindow。初始化时设置了窗口的标题、位置和大小,并在窗口中添加了以下组件:
    一个QLineEdit输入框,用于输入视频文件所在的文件夹路径。
    一个名为“Import Folder”的QPushButton,点击后触发import_folder方法,打开文件对话框供用户选择文件夹,并将选定的文件夹路径显示在输入框中。
    一个名为“Execute”的QPushButton,点击后触发execute_check方法,执行视频时长检查操作。

import_folder方法中使用QFileDialog.getExistingDirectory获取用户选择的文件夹路径,并将其赋值给输入框。

execute_check方法中:
    获取用户在输入框中输入的文件夹路径。
    在该路径下创建一个名为'72010'的子文件夹,如果已存在则不会报错。
    遍历输入文件夹下的所有文件,筛选出.mp4、.avi和.mov格式的视频文件。
    对于每一个符合条件的视频文件,使用moviepy库加载视频并获取其时长。
    若视频时长大于或等于10秒,将该视频文件移动至'72010'子文件夹内。

检查完成后,弹出一个QMessageBox告知用户视频时长检查操作已完成。

最后,程序入口处创建QApplication对象、VideoDurationChecker类的实例,并显示窗口,进入事件循环等待用户操作。

下面是窗口截图:
在这里插入图片描述

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值