一起来找茬 小游戏 cv2+pyautogui自动识别
# 第一张图片
img1_name = 'diff_mini_1.png'
# 第二张图片
img2_name = 'diff_mini_2.png'
imageA = cv2.imread(img1_name, 0)
imageB = cv2.imread(img2_name, 0)
diff = cv2.absdiff(imageA, imageB)
# 识别率大概在95%,有一些识别不出来,浅色+矩形
# 有些浅色矩形识别不出来,可以看diff_gay.png
# cv2.imwrite('diff_gray.png', diff)
# 利用像素点值进行阈值分割,得到一副黑白图像
diff = cv2.threshold(diff, 25, 255, cv2.THRESH_BINARY)[1]
# 生成椭圆结构元素
es = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (9, 4))
# 膨胀图像,减少错误
diff = cv2.dilate(diff, es, iterations=2)
# 得到图像中的目标轮廓
cnts, hierarchy = cv2.findContours(diff.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for c in cnts:
# if cv2.contourArea(c) < 1:
# continue
# 绘制目标矩形框
(x, y, w, h) = cv2.boundingRect(c)
cv2.rectangle(imageA, (x + 2, y + 2), (x + w, y + h), (0, 255, 0), 2)
# 有需要可以把imageA保存起来
# cv2.imwrite('res.png', imageA)
pyautogui.moveTo(win32.left + x + int(w/2), win32.top + 209 + y + int(h/2), 0.2)
time.sleep(0.2)
pyautogui.click()