From 5c1caffc645e271121f5875c974a804863355034 Mon Sep 17 00:00:00 2001 From: Siwat Sirichai Date: Thu, 31 Mar 2022 12:29:41 +0700 Subject: [PATCH] rename methods --- ambilight_mulitprocessing.py | 53 +++++++++++++++++++----------------- test.py | 12 +++----- 2 files changed, 32 insertions(+), 33 deletions(-) diff --git a/ambilight_mulitprocessing.py b/ambilight_mulitprocessing.py index 7745c77..54f9e0b 100644 --- a/ambilight_mulitprocessing.py +++ b/ambilight_mulitprocessing.py @@ -13,15 +13,16 @@ from multiprocessing import Pool import PIL.ImageGrab from PIL import Image import colorsys +from scipy.stats import mode import win32gui, win32ui, win32con -BOARDER_SIZE = 50 +BOARDER_SIZE = 300 TOP_LEDS = 19 RIGHT_LEDS = 11 BUTTOM_LEDS = 19 LEFT_LEDS = 11 MIN_TIME = 0.05 -FAST_MODE = True +METHOD = 'MEDIAN' #MEAN/MEDIAN/MODE/CLUSTER_MEAN, WARNING: CLUSTER_MEAN might burn down your house. SATURATION_BOOST_FACTOR = 2 NUM_CLUSTERS = 3 KMEAN_QUALITY = 50 @@ -29,6 +30,15 @@ NUM_THREADS = 16 if __name__ == '__main__': board = telemetrix_rpi_pico.TelemetrixRpiPico() + +def sigint_handler(signal=None, frame=None): + if __name__ == '__main__': + print ('KeyboardInterrupt is caught') + board.neopixel_clear() + sleep(0.75) + board.shutdown() + exit() + class size: width = None height = None @@ -36,26 +46,18 @@ class size: def get_screenshot(): return PIL.ImageGrab.grab() -def sigint_handler(signal=None, frame=None): - print ('KeyboardInterrupt is caught') - board.neopixel_clear() - sleep(0.75) - board.shutdown() - exit() - def find_dorminant_color(im): - if FAST_MODE: - color = numpy.reshape(numpy.asarray(im),(-1,3)) - color = numpy.median(color,axis=0) - - h,s,v = colorsys.rgb_to_hsv(r=color[0]/255,g=color[1]/255,b=color[2]/255) - s = min(1,s*SATURATION_BOOST_FACTOR) - r,g,b = colorsys.hsv_to_rgb(h=h,s=s,v=v) - return [r*255,g*255,b*255] - else: - + color = numpy.reshape(numpy.asarray(im),(-1,3)) + + if METHOD == 'MODE': + color = mode(color,axis=0).mode[0] + elif METHOD == 'MEDIAN': + color = np.median(color,axis=0) + elif METHOD == 'MEAN': + color = np.mean(color,axis=0) + elif METHOD == 'CLUSTER_MEAN': im = im.resize((KMEAN_QUALITY, KMEAN_QUALITY)) ar = np.asarray(im) shape = ar.shape @@ -66,12 +68,12 @@ def find_dorminant_color(im): counts, bins = np.histogram(vecs, len(codes)) index_max = np.argmax(counts) - peak = codes[index_max] - - h,s,v = colorsys.rgb_to_hsv(r=peak[0]/255,g=peak[1]/255,b=peak[2]/255) - s = min(1,s*SATURATION_BOOST_FACTOR) - r,g,b = colorsys.hsv_to_rgb(h=h,s=s,v=v) - return [r*255,g*255,b*255] + color = codes[index_max] + + h,s,v = colorsys.rgb_to_hsv(r=color[0]/255,g=color[1]/255,b=color[2]/255) + s = min(1,s*SATURATION_BOOST_FACTOR) + r,g,b = colorsys.hsv_to_rgb(h=h,s=s,v=v) + return [r*255,g*255,b*255] if __name__ == '__main__': size = size() size.width=pyautogui.size().width @@ -120,4 +122,5 @@ if __name__ == '__main__': sleep(0.001) print("loop time : "+str(timestamp()-lastTime)) except Exception as e: + print(e) print("Retrying") diff --git a/test.py b/test.py index 57f7e3a..32e4434 100644 --- a/test.py +++ b/test.py @@ -1,12 +1,8 @@ import cupy import colorsys -from matplotlib impl plot +from scipy.stats import mode +import numpy as np -peak = [124.3,231.5, 64.4] -h,s,v = colorsys.rgb_to_hsv(r=peak[0]/255,g=peak[1]/255,b=peak[2]/255) -SATURATION_BOOST_FACTOR = 1.5 -s = min(1,s*SATURATION_BOOST_FACTOR) -print([h,s,v]) -r,g,b = colorsys.hsv_to_rgb(h=h,s=s,v=v) -print([r,g,b]) +a = np.asarray([[134,452,532],[123,531,532],[111,553,742]]) +print(mode(a).mode[0])