add alpha wayland support for ambient mode

This commit is contained in:
Lucca Ketterer 2020-08-01 22:38:35 +02:00
parent c76b3304b3
commit 434b8fc84e

View File

@ -10,6 +10,10 @@ import numpy as np
from skimage import io from skimage import io
from threading import Thread from threading import Thread
import time import time
import io
import time
from gi.repository import GLib
from pydbus import SessionBus
s1 = socket.socket() s1 = socket.socket()
s2 = socket.socket() s2 = socket.socket()
@ -46,7 +50,6 @@ def vibrant(r,g,b):
intensity = 1+intensity/1000 intensity = 1+intensity/1000
rgb = [r,g,b] rgb = [r,g,b]
print(rgb)
#min_idx = rgb.index(min(rgb)) #min_idx = rgb.index(min(rgb))
d = (r+g+b)/3 d = (r+g+b)/3
for c in range(3): for c in range(3):
@ -54,8 +57,9 @@ def vibrant(r,g,b):
rgb[c] = int(rgb[c]*(intensity**(rgb[c]-d))) rgb[c] = int(rgb[c]*(intensity**(rgb[c]-d)))
elif rgb[c] > d: elif rgb[c] > d:
rgb[c] = int(rgb[c]*(-intensity**(-rgb[c]+d)+2)) rgb[c] = int(rgb[c]*(-intensity**(-rgb[c]+d)+2))
if rgb[c] > 255:
rgb[c] = 255
#rgb[min_idx] = int(rgb[min_idx]*(rgb[min_idx]/d)**2) #rgb[min_idx] = int(rgb[min_idx]*(rgb[min_idx]/d)**2)
print(rgb)
return rgb return rgb
def ambient_light_thread(): def ambient_light_thread():
@ -89,11 +93,32 @@ def ambient_light():
global _r,_g,_b global _r,_g,_b
bus = SessionBus()
#RecorderPipeline = "vp8enc min_quantizer=10 max_quantizer=50 cq_level=13 cpu-used=1 deadline=1000000 threads=%T ! queue ! webmmux"
GNOMEScreencast = bus.get('org.gnome.Shell.Screencast', '/org/gnome/Shell/Screencast')
GNOMEScreencast.Screencast('/tmp/a', {})
#GNOMEScreencast.StopScreencast()
time.sleep(1)
while True: while True:
# screenshot # screenshot
img = pyscreenshot.grab(backend="mss", childprocess=False, bbox=(1920,0,4480,1440))
# Xorg
#img = pyscreenshot.grab(backend="mss", childprocess=False, bbox=(1920,0,4480,1440))
#Wayland
time.sleep(0.1)
cap = cv2.VideoCapture('/tmp/a')
count = cap.get(cv2.CAP_PROP_FRAME_COUNT)
cap.set(cv2.CAP_PROP_POS_FRAMES, count-1)
ret, frame = cap.read()
frame = cv2.cvtColor(frame,cv2.COLOR_BGR2RGB)
img = Image.fromarray(frame)
cap.release()
# find dominant color
''' '''
img = np.array(img) img = np.array(img)
pixels = np.float32(img.reshape(-1, 3)) pixels = np.float32(img.reshape(-1, 3))
@ -107,6 +132,7 @@ def ambient_light():
_r,_g,_b = int(dominant[0]), int(dominant[1]), int(dominant[2]) _r,_g,_b = int(dominant[0]), int(dominant[1]), int(dominant[2])
''' '''
# find dominant color
img.thumbnail((1,1)) img.thumbnail((1,1))
r,g,b = img.getpixel((0, 0)) r,g,b = img.getpixel((0, 0))
_r,_g,_b = vibrant(r,g,b) _r,_g,_b = vibrant(r,g,b)