import abc from ImageProcessingWorker import ImageProcessingWorker import numpy as np from PyQt6.QtWidgets import QApplication, QLabel, QVBoxLayout, QHBoxLayout, QPushButton, QWidget, QFileDialog, QSlider, QLineEdit, QDialog from PyQt6.QtGui import QPixmap, QImage, QColor, QPainter, QPen from PyQt6.QtCore import Qt, QPoint, QThread from ImageParameterDialog import ImageParameterDialog class HueDialog(ImageParameterDialog): def __init__(self, hsv_image): super().__init__(hsv_image) self.setWindowTitle("Hue Correction Dialog") self.layout = QVBoxLayout() self.hue_slider = QSlider(Qt.Orientation.Horizontal) self.hue_slider.setRange(-180, 180) self.chroma_slider = QSlider(Qt.Orientation.Horizontal) self.chroma_slider.setRange(-100, 100) self.lightness_slider = QSlider(Qt.Orientation.Horizontal) self.lightness_slider.setRange(-100, 100) self.label1 = QLabel("Hue Value: 0") self.label2 = QLabel("Chroma Value: 0") self.label3 = QLabel("Lightness Value: 0") self.hue_slider.valueChanged.connect(lambda value: self.update(self.label1, value, "Hue")) self.chroma_slider.valueChanged.connect(lambda value: self.update(self.label2, value, "Chroma")) self.lightness_slider.valueChanged.connect(lambda value: self.update(self.label3, value, "Lightness")) self.layout.addWidget(self.label1) self.layout.addWidget(self.hue_slider) self.layout.addWidget(self.label2) self.layout.addWidget(self.chroma_slider) self.layout.addWidget(self.label3) self.layout.addWidget(self.lightness_slider) self.setLayout(self.layout) def update(self, label, value, slider_name): label.setText(f"{slider_name} Value: {value}") self.send_to_process({ 'hue': self.hue_slider.value(), 'chroma': self.chroma_slider.value() / 100.0, 'lightness': self.lightness_slider.value() / 100.0 }) def process_image(self,hsv_image, values): hue = values.get('hue', 0.0) / 2 chroma = values.get('chroma', 0.0) + 1.0 lightness = values.get('lightness', 0.0) + 1.0 hsv_image[..., 0] = (hsv_image[..., 0] + hue) % 180 # Adjust chroma (saturation) hsv_image[..., 1] = np.clip(hsv_image[..., 1] * chroma, 0, 255) # Adjust lightness (value) hsv_image[..., 2] = np.clip(hsv_image[..., 2] * lightness, 0, 255) return hsv_image