所以我试图检查网站屏幕固定位置是否有通知点。
我在这里发现了另一个问题,试图在屏幕上找到黑白点,我尝试了它,但是它在不应该找到的时候找到了点,所以我不知道我做错了什么,我尝试切换值由于 cv2 中的 BGR/RGB 问题,但这不应该是 numpy 的问题吗?我不知道,请帮忙。
这是我的代码:
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
import pyautogui as pya
def test():
screen = pya.screenshot(region=(550, 90, 30, 50))
# screen.show()
img = np.array(screen)
x, y, z = np.where(img==(173,95,255))
points = zip(x,y)
print(points)
if points:
return True
else:
return False
找到了一个好的解决方案。
截取带有您要查找的小点的图标。
然后,您将该屏幕截图放在与 Python 代码相同的文件夹中,并将其命名为 notification.png
然后,在屏幕上打开网站的情况下运行此代码(使用此代码,我们将找到包含您刚刚在图标+通知点上拍摄的打印屏幕的框的坐标):
import pyautogui
import time
time.sleep(1)
location = pyautogui.locateOnScreen('notification.png')
print(location)
就我而言,我收到以下输出(坐标):
Box(left=1474, top=109, width=52, height=52)
然后,我们将执行以下操作。检查此通知图像是否出现在屏幕的同一位置,因此我们只需执行以下操作:
import pyautogui
import time
r = None
while r is None:
try:
location = pyautogui.locateOnScreen('notification.png')
if str(location) == "Box(left=1474, top=109, width=52, height=52)":
print("found Image!")
else:
print("Not found Image!")
break
except Exception as e:
r = None
如果在屏幕上找到图像,则会显示找到图像,如果没有,则显示未找到。 如果您使用 2 个屏幕,渲染可能需要一段时间。 因此,您可以设置一个计时器来中断脚本,以防您认为在未找到的情况下花费的时间太长,或者您可以限制搜索区域。