47 lines
1.6 KiB
Python
47 lines
1.6 KiB
Python
from PyQt6.QtWidgets import QVBoxLayout, QLabel, QSlider
|
|
from PyQt6.QtCore import Qt
|
|
import numpy as np
|
|
|
|
from .ImageParameterDialog import ImageParameterDialog
|
|
from .. import ImageProcessingWorker
|
|
|
|
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" |