前天在辨識的時候發現辨識的位置跑掉了,所以要來修正這個錯誤
首先以全螢幕來說,一般的螢幕畫面大約是19201080,那從pillow擷取全螢幕的話也是19201080,但是對pynput來說,因為我的螢幕大小有調整過,所以會以1280*720為準,為此則需要先寫一個調整大小的比率
# 對螢幕的尺寸修正
window_rate_x = 1280 / 1920
window_rate_y = 720 / 1080
接著就是調整position_list和size_list
# 尺寸修正
rate_x = size_x / 576
rate_y = size_y / 1280
# 尺寸大約60px
size_list = [
(60 * rate_x, 60 * rate_y),
(60 * rate_x, 60 * rate_y),
(90 * rate_x, 90 * rate_y),
(60 * rate_x, 60 * rate_y),
(60 * rate_x, 60 * rate_y),
]
# 擷取圖片叉叉的左上位置
# 使用range1代表以左上為準,使用range2代表以右下為準
left_position_list = [
(0 + self.range_x1, 0 + self.range_y1),
(60 + self.range_x1, 60 + self.range_y1),
(self.range_x2 - size_list[2][0], 60 + self.range_y1),
(self.range_x2 - size_list[3][0], 40 + self.range_y1),
(self.range_x2 - size_list[4][0], 80 + self.range_y1),
]
# 填入辨識範圍清單
self.position_list = []
for left in left_position_list:
# 擷取圖片叉叉的右下位置
right = (left[0]+size_list[0][0], left[1]+size_list[1][1])
self.position_list.append([left, right])
最後在辨識結果改一下邏輯
x, not_x, skip, background = prediction[0]
if not_x > 0.8:
continue
if x > 0.8:
result_x = (p[0][0] + p[1][0]) / 2
result_y = (p[0][1] + p[1][1]) / 2
result = [result_x, result_y]
break
elif skip > 0.8:
result_x = (p[0][0] + p[1][0]) / 2
result_y = (p[0][1] + p[1][1]) / 2
result = [result_x, result_y]
break
else:
continue
這樣就能取得叉叉的中心點位置了,明天再來寫點擊方法