123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- #!/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, initializers
- import sys
- sys.path.append('../hostLib/')
- 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.float32, shape=(width, height, 3))
- z = Conv2DFPGA(1, kernel_initializer=initializers.Constant(1/25))(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.float32)
- #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, [1,1,1,1])
- print(batch.shape)
- predictions = model.predict(batch)
- pred8 = tf.cast(predictions, 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
|