昨天一整天其實都睡不好,所以今天的內容大概會有點詭異(?,不過至少稍微脫離進度危機了
昨天可以辨識叉叉以後,接下來直接擷取螢幕畫面下來,並且針對畫面來進行辨識,不過這邊我想用連續影像的方式來進行擷取看看,後續再看是要按鍵截圖辨識還是連續影像辨識
首先先引入模組
from PIL import ImageGrab
import numpy as np
import cv2
接著擷取連續畫面
while True:
# 全螢幕擷取
img_rgb = ImageGrab.grab()
img_bgr = cv2.cvtColor(np.array(img_rgb), cv2.COLOR_RGB2BGR)
cv2.imshow('imm', img_bgr)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cv2.destroyAllWindows()
看起來其實就是用迴圈來連續擷取
實際效果
有些詭異的畫面w
那接下來針對這個連續畫面來進行辨識
import numpy as np
import cv2
from keras.models import load_model
from PIL import Image, ImageOps, ImageGrab
model = load_model('x.h5')
data = np.ndarray(shape=(1, 224, 224, 3), dtype=np.float32)
def cross_detect(image):
# resize to 224, 224
size = (224, 224)
image = ImageOps.fit(image, size, Image.ANTIALIAS)
# 轉換成np數組
image_array = np.asarray(image)
normalized_image_array = (image_array.astype(np.float32) / 127.0) - 1
data[0] = normalized_image_array
# 進行辨識
prediction = model.predict(data)
print(prediction)
x, not_x, skip = prediction[0]
if x > 0.8:
print("x!")
elif skip > 0.8:
print("skip!")
while True:
# 指定畫面大小
img_rgb = ImageGrab.grab(bbox = (300, 300, 360, 360))
img_bgr = cv2.cvtColor(np.array(img_rgb), cv2.COLOR_RGB2BGR)
cv2.imshow('imm', img_bgr)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cv2.destroyAllWindows()
呈現的效果
功能是有了,但是辨識的效果不如預期,主要應該是因為沒有背景樣本,看來需要再多一些樣本進去訓練