mame模拟器版大家来找碴外挂,python源码

参考网络大神们的经验,写的一个mame模拟器版大家来找碴的外挂,
屏幕分辨率设置成1920*1080,

开mame模拟器之后得进入全屏幕,快捷键是alt+enter键

进入找碴的两个相同画面后,暂停游戏,默认键是P

alt+tab键弹出来,运行python外挂,

这时候不要动,外挂会自动找到游戏,自动找到5处不同并画图标出来,根据外挂画的图,自己再返回游戏,手动标出5处不同.

其实可以做的更完美一些,让python自动化操作,控制鼠标点不同.
不过我没耐心,懒得研究怎么弄了.

有时候截屏是黑屏,那就要重新运行一次外挂.

import win32gui
from PIL import ImageGrab 
import win32con
import cv2
import matplotlib.pyplot as plt
import imutils
from matplotlib.image import imread

#调用ssim函数
from skimage.metrics import structural_similarity

game_hwnd = win32gui.FindWindow("MAME", "MAME: 大家来找碴 [photoy2k]")
print(game_hwnd)  
win32gui.ShowWindow(game_hwnd, win32con.SW_RESTORE) 
# 强行显示界面后才好截图 
win32gui.SetForegroundWindow(game_hwnd) 
# 将游戏窗口提到最前  
# 裁剪得到全图 
game_rect = win32gui.GetWindowRect(game_hwnd)
src_image = ImageGrab.grab(bbox = None) 
src_image.show()  
# 分别裁剪左右内容图片 
left_box = (39, 261, 39+882, 261+772)
right_box = (999, 261, 999+882, 261+772)
image_left = src_image.crop(left_box)
image_right = src_image.crop(right_box) 
image_left.show() 
image_right.show()
image_left.save("image_left.png")
image_right.save("image_right.png")

print(type(image_right))
imageA = cv2.imread("image_left.png")
imageB = cv2.imread("image_right.png")
grayA = cv2.cvtColor(imageA, cv2.COLOR_BGR2GRAY)
grayB = cv2.cvtColor(imageB, cv2.COLOR_BGR2GRAY)


#返回三个值
mssim, grad , S = structural_similarity(grayA, grayB, gradient=True,full=True)
'''
mssim:float
图像上的平均结构相似性指数。

grad:ndarray
im1 和 im2 [2]之间结构相似性的梯度。这仅在梯度设置为 True 时返回。

S:ndarray
完整的 SSIM 图像。这仅在full设置为 True 时返回。
'''
S= (S* 255).astype("uint8")

thresh = cv2.threshold(S, 0, 255,cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1]
cnts = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
cnts = imutils.grab_contours(cnts)
for c in cnts:
        (x, y, w, h) = cv2.boundingRect(c)
        cv2.rectangle(imageA, (x, y), (x + w, y + h), (0, 0, 255), thickness = 4)
        cv2.rectangle(imageB, (x, y), (x + w, y + h), (0, 0, 255), thickness = 4)
cv2.waitKey(0)
cv2.imwrite(filename="Find_Different.png", img=imageB)

 
img = imread('Find_Different.png')
plt.imshow(img)
 
plt.show()

外挂找出来的不同效果如下:
在这里插入图片描述
在这里插入图片描述
尽量把蓝色鼠标箭头移到画面外,不然会把鼠标箭头的位置当成不同找出来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值