From e784983f99ed54ed7fc11ba962f1b06d04ad9f58 Mon Sep 17 00:00:00 2001
From: jimmy <git@jimmy.nz>
Date: Fri, 22 Jul 2022 00:09:36 +1200
Subject: [PATCH] Stuff

---
 slave/image.py | 35 +++++++++++++++---------------
 slave/main.py  | 58 +++++++++++++++++++++++++++++++++-----------------
 slave/video.py |  5 +++--
 3 files changed, 58 insertions(+), 40 deletions(-)

diff --git a/slave/image.py b/slave/image.py
index dce7871..4fa540a 100644
--- a/slave/image.py
+++ b/slave/image.py
@@ -1,23 +1,22 @@
-from PIL import Image, ImageDraw
 import cv2
-import numpy
+import numpy as np
 from time import sleep
 
-def blank(x, y):
-    image = Image.new('RGB', (1920, 1080), color='black')
-    draw = ImageDraw.Draw(image)
-    draw.ellipse((0, 0, 500, 500), fill='Black')
-    draw.ellipse((10, 10, 490, 490), fill='White')
+class Image:
+    def __init__(self, x, y):
+        self.x = x
+        self.y = y
 
+    def show(self, path):
+        image = cv2.imread(path)
+        cv2.namedWindow("window", cv2.WND_PROP_FULLSCREEN)
+        cv2.moveWindow("window", self.x, self.y)
+        cv2.setWindowProperty("window",cv2.WND_PROP_FULLSCREEN,cv2.WINDOW_FULLSCREEN)
+        cv2.imshow("window", image)
 
-    opencvImage = cv2.cvtColor(numpy.array(image), cv2.COLOR_RGB2BGR)
-
-    cv2.namedWindow("window", cv2.WND_PROP_FULLSCREEN)
-    cv2.moveWindow("window", 0, 0)
-    cv2.setWindowProperty("window",cv2.WND_PROP_FULLSCREEN,cv2.WINDOW_FULLSCREEN)
-    
-    cv2.imshow("window", opencvImage)
-
-if __name__ == "__main__":
-    blank(0, 0)
-    cv2.waitKey(1000)
\ No newline at end of file
+    def blank(self):
+        blank_image = np.zeros(shape=[512, 512, 3], dtype=np.uint8)
+        cv2.namedWindow("window", cv2.WND_PROP_FULLSCREEN)
+        cv2.moveWindow("window", self.x, self.y)
+        cv2.setWindowProperty("window",cv2.WND_PROP_FULLSCREEN,cv2.WINDOW_FULLSCREEN)
+        cv2.imshow("window", blank_image)
diff --git a/slave/main.py b/slave/main.py
index 8b19e81..888f2ad 100644
--- a/slave/main.py
+++ b/slave/main.py
@@ -6,19 +6,25 @@ from random import randint
 from time import sleep
 import paho.mqtt.client as mqtt
 from video import Video
-import multiprocessing
 import sys
 from random import randint
-from PIL import Image, ImageDraw
 import cv2
+from image import Image
+import multiprocessing
 
 class App:
     def __init__(self, client, x, y):
         self.x = x
         self.y = y
+
+        
         self.client = client
         self.video = Video(x, y)
+        self.image = Image(x, y)
         self.videos = [join("slave/videos", f) for f in listdir("slave/videos") if isfile(join("slave/videos", f))]
+        self.images = [join("slave/images", f) for f in listdir("slave/images") if isfile(join("slave/images", f))]
+        self.lastvideo = -1
+        self.lastimage = -1
         print(self.videos)
         print(self.videos[randint(0, len(self.videos)-1)])
         
@@ -43,32 +49,44 @@ class App:
 
     def idle(self):
         last = -1
-        secondlast = -1
+        
         while True:
             try:
                 self.x.terminate()
             except:
                 pass
-            i = randint(0, len(self.videos)-1)
-            if i == last or i == secondlast:
-                continue
             
-            secondlast = last
-            last = i
-            video = self.videos[i]
-            print(video)
-            self.video.start(video)
-            self.blank()
-            sleep(1)
+            # if i == last:
+            #     continue
+            if randint(0,5) == 0:
+                self.showimage()
+            else:
+               self.playvideo()
 
-    def blank(self):
-        image = Image.new('RGB', (2000, 2000), color='black')
-        cv2.namedWindow("window", cv2.WND_PROP_FULLSCREEN)
-        cv2.moveWindow("window", self.x, self.y)
-        cv2.setWindowProperty("window",cv2.WND_PROP_FULLSCREEN,cv2.WINDOW_FULLSCREEN)
-        
-        cv2.imshow("window", image)
+    def showimage(self):
+        totalimages = len(self.images)-1
+        i = randint(0, totalimages)
+        if i == self.lastimage:
+            i += 1
+            if i > totalimages:
+                i = 0
+        self.lastimage = i
+        self.image.show(self.images[i])
+        cv2.waitKey(1000)
 
+    def playvideo(self):
+        totalvideos = len(self.videos)-1
+        i = randint(0, totalvideos)
+        if i == self.lastvideo:
+            i += 1
+            if i > totalvideos:
+                i = 0
+        self.lastvideo = i
+        video = self.videos[i]
+        print(video)
+        self.video.start(video)
+        self.image.blank()
+        cv2.waitKey(1)
 
 def main():
 
diff --git a/slave/video.py b/slave/video.py
index 6787b8a..5fd7444 100644
--- a/slave/video.py
+++ b/slave/video.py
@@ -27,9 +27,10 @@ class Video:
         delay = 1/fps * 1000
         print(fps, delay)
         i = 0
+        playframes = randint(50, 200)
         while(self.cap.isOpened() ):
             i += 1
-            if i > 100:
+            if i > playframes:
                 break
 
             # Capture frame-by-frame
@@ -49,7 +50,7 @@ class Video:
             # Break the loop
             else: 
                 break
-        self.cap.release()
+        #self.cap.release()
    
         # Closes all the frames
         #cv2.destroyAllWindows()