|
@@ -0,0 +1,71 @@
|
|
|
+#!/usr/local/bin/python
|
|
|
+# -*- coding: utf-8 -*-
|
|
|
+
|
|
|
+import numpy as np
|
|
|
+import cv2
|
|
|
+from mss import mss
|
|
|
+from PIL import Image
|
|
|
+import threading
|
|
|
+import time
|
|
|
+from random import randint
|
|
|
+
|
|
|
+import tensorflow as tf
|
|
|
+from tensorflow.keras import layers, models
|
|
|
+
|
|
|
+import sys
|
|
|
+sys.path.append('..')
|
|
|
+from hostLib.layers.conv2D import Conv2D as Conv2DFPGA
|
|
|
+
|
|
|
+bounding_box = {'top': 0, 'left': 0, 'width': 2560, 'height': 1440}
|
|
|
+width, height = 228, 228
|
|
|
+
|
|
|
+sct = mss()
|
|
|
+stop = 0
|
|
|
+
|
|
|
+a = layers.Input(dtype=tf.int32, shape=(width, height, 3))
|
|
|
+z = Conv2DFPGA(1)(a)
|
|
|
+model = models.Model(inputs=a, outputs=z)
|
|
|
+
|
|
|
+
|
|
|
+#model.compile(loss=tf.keras.losses.categorical_crossentropy,
|
|
|
+# optimizer=tf.keras.optimizers.Adadelta(),
|
|
|
+# metrics=['accuracy'])
|
|
|
+
|
|
|
+sct_img = sct.grab(bounding_box)
|
|
|
+np_img = np.array(sct_img)
|
|
|
+resized_image = cv2.resize(np_img, (width, height))
|
|
|
+resized_image = cv2.cvtColor(resized_image, cv2.COLOR_BGRA2BGR)
|
|
|
+while True:
|
|
|
+ cv2.ellipse(
|
|
|
+ resized_image,
|
|
|
+ (randint(0,width), randint(0,height)),
|
|
|
+ (randint(0,width/2), randint(0,height/2)),
|
|
|
+ randint(0,360),
|
|
|
+ 0,
|
|
|
+ 360,
|
|
|
+ [randint(0,256), randint(0,256), randint(0,256)],
|
|
|
+ 10
|
|
|
+ )
|
|
|
+ img32 = tf.cast(resized_image, tf.int32)
|
|
|
+ #img32 = np.expand_dims(img32, axis=2)
|
|
|
+
|
|
|
+ cv2.imshow('screen', resized_image)
|
|
|
+ x,y,w,h = cv2.getWindowImageRect('screen')
|
|
|
+ batch = np.expand_dims(img32, axis=0)
|
|
|
+ batch = tf.tile(batch, [2,1,1,1])
|
|
|
+
|
|
|
+
|
|
|
+ predictions = model.predict(batch)
|
|
|
+
|
|
|
+
|
|
|
+ pred8 = tf.cast(predictions / 256, tf.uint8)
|
|
|
+ for i in range(pred8.shape[0]):
|
|
|
+ name = 'conv_{}'.format(i)
|
|
|
+ cv2.imshow(name, pred8.numpy()[i])
|
|
|
+ cv2.moveWindow(name, x+((i+1)*300)%1500, y+int((i+1)/5)*300)
|
|
|
+
|
|
|
+
|
|
|
+ if (cv2.waitKey(1) & 0xFF) == ord('x') or stop:
|
|
|
+ cv2.destroyAllWindows()
|
|
|
+ stop = True
|
|
|
+ break
|