from PyQt6.QtWidgets import QVBoxLayout, QLabel, QCheckBox import cv2 from .ImageParameterDialog import ImageParameterDialog import ImageProcessingWorker class FlipDialog(ImageParameterDialog): def __init__(self, image): super().__init__(image, ImageProcessingWorker.ImageProcessingWorker) self.setWindowTitle("Flip Image") self.layout = QVBoxLayout() self.horizontal_flip_checkbox = QCheckBox("Flip Horizontally") self.horizontal_flip_checkbox.stateChanged.connect(self.update) self.vertical_flip_checkbox = QCheckBox("Flip Vertically") self.vertical_flip_checkbox.stateChanged.connect(self.update) self.layout.addWidget(QLabel("Select flip options:")) self.layout.addWidget(self.horizontal_flip_checkbox) self.layout.addWidget(self.vertical_flip_checkbox) self.layout.addWidget(self.button_box) self.setLayout(self.layout) def update(self): self.send_to_process({ 'flip_horizontal': self.horizontal_flip_checkbox.isChecked(), 'flip_vertical': self.vertical_flip_checkbox.isChecked() }) def process_image(self, image, values): if values['flip_horizontal']: image = cv2.flip(image, 1) if values['flip_vertical']: image = cv2.flip(image, 0) return image @classmethod def dialog_name(cls): return "Flip Image"