Python 阴阳师/pillow-窗口截屏/opencv-图像识别/pyaotugui-点击/pyqt5-UI界面设计/pyqt5-窗口绘制

成品图片

1. 准备材料

1.1 Python

Python是一门计算机编程语言,比其他编程语言都要简单,比较适合初学者。做这个智能点击你需要有Python的编程基础和对涉及模块内容的掌握。Python的编程基础在一些学习编程的网站或者图书馆里面都有。

1.2 Pycharm

Pycharm是一种IDE软件,中文是集成开发环境 ,用来表示辅助程序员开发的应用软件。或者你可以理解为Python语言在Pycharm软件里面运行。关于怎么安装和使用Pycharm,网上教程都有。

2. 智能点击思路

对屏幕进行截图,对截图的内容进行比对,如果可以比对的上,进行点击操作,重复前面内容并组合成完整的一连串点击操作。

3.代码部分

3.1截图

截图使用的是pillow模块,pycharm安装模块需要在File--Settings--Project--Python Interpreter--+里面搜索模块名字来安装,然后import导入模块。

全屏截图

安装pillow模块

from PIL import ImageGrab    #导入PIL模块
 
im = ImageGrab.grab()        #全屏截屏
im.save('A.png')             #图片保存为 A.png

3.2 图像识别

图像识别是软件最核心的部分,没有图片识别就无法进行智能点击。图片识别使用python的opencv模块,opencv原理是把图片变成数组,通过计算数组来对图片进行操作。在Python Interpreter里面搜索opencv-python安装opencv模块。图片识别方式有很多,有图片比对,特征识别,AI识别等等。这些方式各有各的优缺点。

图片比对

优点:代码简单,复制函数即用。识别速度很快,识别正确率高。

缺点:截屏图片和比对图片的大小固定,改变截屏图片的大小就不能识别。所以阴阳师软件的窗体大小不能改变,要与截屏时的大小对应。只能在一个软件里面用(阴阳师PC,安卓模拟器),换软件也不能识别。

import cv2 as cv

def coordinate(original, part):
	img = cv.imread(original)
	img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
	template = cv.imread(part, 0)
	w, h = template.shape[::-1]
	res = cv.matchTemplate(img_gray, template, cv.TM_CCOEFF_NORMED)
	min_val, max_val, min_loc, max_loc = cv.minMaxLoc(res)
	#print(min_val+max_val)
	if min_val + max_val > 0.18:		#0到0.5可定义精度
		top_left = max_loc
		bottom_right = (top_left[0] + w, top_left[1] + h)
		return top_left, bottom_right
	else:
		return -1

输入

original 输入屏幕截图图片(图片的相对位置或绝对位置,例子"E:\Desktop\A.png")

part 输入需要识别的图片(图片的相对位置或绝对位置,例子"E:\Desktop\picture.png")

输出

如果未识别返回-1,如果识别了,返回 partoriginal 的左上角和右下角的坐标。

其他

cv.imread(图片位置,通道)

通道 = 0, 灰度(黑白)

通道 = 1,彩色(BGR,和标准的RGB颜色是反的,如果需要展示图片需要转换,不然很怪。)

通道不同,数组的大小就不同,你可以把灰度想象成1维数组(时间复杂度 O(n)),彩色想象成2维数组(时间复杂度O(n^2))。因此不同通道对图片计算的速度影响比较大,很明显用灰度计算要比彩色快很多。所以在这里我们使用的是灰度。

0.18是区间在0和0.5之间比对的精度,0最低识别精度,0.5最高识别精度。

特征识别

优点:准确率较高,识别速度较快,最大的优点是可以改变阴阳师的窗口大小和换软件也能识别(阴阳师PC,安卓模拟器)

缺点:对图片的要求比较高,需要特征非常明显的图片(颜色差异大)才能正确识别,不然比较容易识别错误,导致错误的点击。

AI识别

优点:可以改变阴阳师的窗口大小和换软件也能识别(阴阳师PC,安卓模拟器),不需要特征明显的图片,机器训练即可。

缺点:代码难度极高,需要学习人工智能的基础知识和数学(数学不是一般的难),识别速度会比较慢,因为计算量大。

未完待续

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值