from PyQt6.QtWidgets import QVBoxLayout, QLabel, QSlider from PyQt6.QtCore import Qt from .ImageParameterDialog import ImageParameterDialog import ImageProcessingWorker import numpy as np class TemperatureAdjustmentDialog(ImageParameterDialog): def __init__(self, image): super().__init__(image, ImageProcessingWorker.RGBImageProcessingWorker) self.setWindowTitle("Temperature Adjustment") self.layout = QVBoxLayout() self.temperature_slider = QSlider(Qt.Orientation.Horizontal) self.temperature_slider.setRange(-500, 500) self.temperature_slider.setValue(0) self.temperature_slider.setTickInterval(10) self.temperature_slider.setTickPosition(QSlider.TickPosition.TicksBelow) self.label = QLabel("Temperature: 0") self.temperature_slider.valueChanged.connect(self.update_temperature) self.layout.addWidget(self.label) self.layout.addWidget(self.temperature_slider) self.layout.addWidget(self.button_box) self.setLayout(self.layout) def update_temperature(self, value): self.label.setText(f"Temperature: {value}") self.send_to_process({'temperature': value}) def process_image(self, image, values): temperature = values.get('temperature', 0) increment = temperature * 0.1 image[..., 2] += increment * -1 image[..., 0] += increment image = np.clip(image, 0, 255) return image.astype(np.uint8) @classmethod def dialog_name(cls): return "Temperature Adjustment"