无民氏(假) 无民氏假
关注数: 0 粉丝数: 83 发帖数: 1,072 关注贴吧数: 47
在抄了份識別圖標位置的代碼,但是感覺好差。。。 在抄了份识别图标坐标的代码,感觉识别能力好差。。。。。 有没有什么办法可以提高一下识别能力, 在0.3的时候才匹配到,可能还会出现识别错误点击空白桌面壁纸的情况,有没有什么简单的可以用来识别图标位置的办法。。。? 无能无知的我瑟瑟发抖。。。 import cv2 import numpy as np import pyautogui from PIL import ImageGrab def 如果图标存在则返回图标中心坐标(识别图像的绝对路径,匹配度阈值): print(识别图像的绝对路径) # 定义要查找的图标(假设图标文件名为icon.png) icon_path = 识别图像的绝对路径 # 读取图标图像,通过np.fromfile读取图片,不用担心中文路径问题,然后用cv2.imdecode进行处理 icon_image = cv2.imdecode(np.fromfile(icon_path,dtype=np.uint8), cv2.IMREAD_UNCHANGED) icon_gray = cv2.cvtColor(icon_image, cv2.COLOR_BGR2GRAY) # 定义屏幕截图的范围 screen_width = 1920 screen_height = 1080 left = 0 top = 0 right = screen_width bottom = screen_height # 截图屏幕指定范围 screen_region = ImageGrab.grab(bbox=(left, top, right, bottom)) screen_region = np.array(screen_region) screen_gray = cv2.cvtColor(screen_region, cv2.COLOR_BGR2GRAY) # 使用模板匹配查找图标 result = cv2.matchTemplate(screen_gray, icon_gray, cv2.TM_CCOEFF_NORMED) min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result) # 设置阈值,只有匹配度超过这个值才认为找到了图标 threshold = 匹配度阈值 if max_val >= threshold: # 找到图标的左上角位置 icon_top_left = max_loc print(icon_top_left, type(icon_top_left)) # 计算图标的右下角位置,用图标的像素加上坐标可以得出右下角坐标,xy的顺序好像相反的。。。 print('图标参数', icon_image.shape, type(icon_image.shape)) icon_bottom_right = ((icon_top_left[lbk]0[rbk] + icon_image.shape[lbk]1[rbk]), (icon_top_left[lbk]1[rbk] + icon_image.shape[lbk]0[rbk])) print(icon_bottom_right,type(icon_bottom_right)) #计算中心坐标 中心坐标 = ((icon_top_left[lbk]0[rbk] + icon_bottom_right[lbk]0[rbk]) // 2, (icon_top_left[lbk]1[rbk] + icon_bottom_right[lbk]1[rbk]) // 2) print('中心坐标', 中心坐标, type(中心坐标)) return 中心坐标 else: print("未找到指定图标",识别图像的绝对路径) return "未找到指定图标"
1 下一页