Initial commit with project files
This commit is contained in:
31
CV-App/algorithms/white_balancing.py
Normal file
31
CV-App/algorithms/white_balancing.py
Normal file
@@ -0,0 +1,31 @@
|
||||
import cv2
|
||||
import numpy as np
|
||||
|
||||
from . import Algorithm
|
||||
|
||||
|
||||
class WhiteBalancing(Algorithm):
|
||||
""" White Balancing """
|
||||
|
||||
def __init__(self):
|
||||
""" Define Reference RGB values to (255, 255, 255) """
|
||||
self.max_b, self.max_g, self.max_r = 255, 255, 255
|
||||
self.last_image = None
|
||||
|
||||
def process(self, img):
|
||||
""" Performs white balancing based on the reference RGB values """
|
||||
self.last_image = img
|
||||
img = img.astype(np.float32)
|
||||
img[:, :, 0] = np.clip(img[:, :, 0], 0, self.max_b) * 255 / max(1, self.max_b)
|
||||
img[:, :, 1] = np.clip(img[:, :, 1], 0, self.max_g) * 255 / max(1, self.max_g)
|
||||
img[:, :, 2] = np.clip(img[:, :, 2], 0, self.max_r) * 255 / max(1, self.max_r)
|
||||
img = img.astype(np.uint8)
|
||||
return img
|
||||
|
||||
def mouse_callback(self, event, x, y, flags, param):
|
||||
""" Selects new reference RGB values, if left mouse button is clicked and self.last_image is defined """
|
||||
if self.last_image is None:
|
||||
return
|
||||
if event == cv2.EVENT_LBUTTONUP:
|
||||
self.max_b, self.max_g, self.max_r = \
|
||||
self.last_image[y, x, 0], self.last_image[y, x, 1], self.last_image[y, x, 2]
|
||||
Reference in New Issue
Block a user