
OpenCV版本是342
Python版本是36
pyautogui版本是0951
显示器为1920x1080
(其他像素当然能用,需要自己改)
本项目实现了原神游戏中实时位置检测,将会在控制台返回人物所在的位置的(x,y)坐标,对应大地图上的像素点坐标。
1使用OpenCV里面的Flann特征匹配,实现用右上角的小地图去匹配保存在本地的大地图
2大地图匹非常耗时[将近5秒],而且吃CPU,所以大地图匹配一次后下次只匹配当前位置的大地图的一个小区域,可以看到第一次很慢,之后就快的多了
2使用一个小地图模板来实现检测当前是否是在游戏中,避免没有检测到地图也硬要去匹配地图,造成计算资源浪费
1可以不用截屏,obs采集屏幕,启用虚拟摄像头,opencv捕捉这个虚拟摄像头,可以有很好的防检测能力,就是会有不小的延迟
2截屏也可以全图截屏,然后模板匹配后进行剪裁再规定此后的截屏大小,其实也不错,实现起来不费劲,但就是懒啊
这个只是检测,是第一步,获得位置后就能做导航,安卓端或者web端,想想一下在手机上可以跟百度地图一样显示当前位置,显示资源位置,规划导航路线,自己录制锄地路线,还是很有意思的,也许有空会做?(lazy)
>
不同的语言、框架都有自己擅长的领域:Electron 基于 Chromium 和 Nodejs 能以 Web 开发的模式打造桌面应用,开发用户界面又快捷又简单;Python 则在数据分析、自动化脚本等领域有非常多的应用。两者的社区生态都十分强大,由两者共同构建应用,在界面开发、功能、性能上能够强强联合;
为了简单验证技术可行性,我们来编写一个 Demo:
目的:验证 Electron 打造的桌面应用能够调用 Python,思路是使用 RPC 或 >
1:重新插拔下试试。
2:鼠标本身出问题了,零件之间接触不良,建议换个鼠标试试,如果换个解决问题,就是鼠标的问题。
3:是否USB接口松动或者USB接口出问题,接触不良,换个接口看看。
4:鼠标的驱动出现问题了,可以下载驱动精灵之类的软件,安装相应驱动。
其次:
1如果用的是笔记本电脑,鼠标放在桌面上不动,和在浏览网页时鼠标常常就莫名的消失了,但有时候不去动他,一会又会好了,像遇到这种情况一般来说重启下电脑一般就会好了。
2如果总是盯着某个网站,那么可能是网站问题咯,如果鼠标的光标还是动不到,更新DirectX安装,重启后测试,DX是直接负责加速draw/的,如果发生空鼠标外观问题右键点桌面任意空白位置,最后设置系统硬加速,但是指定的图形却不存在了,再重启计算机就好了
3USB的接口松动,有时候是这样的,这word中,打字时间长了,很久都移不动鼠标,如果不是鼠标质量的问题,可能就是鼠标USB的插口松动了,只要拔下鼠标,把鼠标插紧USB插口就行了。
4如果是电脑的N卡问题的话,这样设置一下,因为这可能跟显示有关。打开显卡控制面板,然后在进入3D设置,设置成“一致性纹理锁”,该选项就选“使用硬件”就行了。
5按alt+tab键最小化所有窗口露出桌面,然后在桌面上空白的地方点下右键,一般情况下鼠标指针就会恢复显示出来了。
hotkey是一个功能非常强大的系统热键设置工具!支持通过自定义系统热键启动预定义的宏命令!支持通过自定义的热键改变屏幕的分辨率,色深,甚至屏幕刷新率,同时它在设定上相当方便,所设定好的热键功能除了能够做排程定时启动外,也支持在DOS视窗下的文字指令,很是方便!
Python获取电脑截图有多种方式,具体如下:
PIL中的ImageGrab模块
windows API
PyQt
pyautogui
使用Selenium截图
使用PIL中的ImageGrab模块简单,但是效率有点低,截屏一次需05s。
调用windows API,速度快但是使用较复杂,这里就不做详细介绍了,因为有更好用的PyQt。
PyQt比调用windows API简单很多,而且有windows API的很多优势,比如速度快,可以指定获取的窗口,即使窗口被遮挡。需注意的是,窗口最小化时无法获取截图。
首先需要获取窗口的句柄。
程序会打印窗口的hwnd和title,有了title就可以进行截图了。
pyautogui是比较简单的,但是不能指定获取程序的窗口,因此窗口也不能遮挡,不过可以指定截屏的位置,004s一张截图,比PyQt稍慢一点,但也很快了。
使用Selenium只能进行WEB程序截图
Python也能象按键精灵一样模拟键鼠 *** 作,直接用Python来做吧,该模块叫pyautogui,了解一下。
import pyautoguiprint('Press Ctrl-C to quit')
try:
while True:
# Get and print the mouse coordinates
x, y = pyautoguiposition()
positionStr = 'X: ' + str(x)rjust(4) + ' Y: ' + str(y)rjust(4)
print(positionStr, end='')
print('\b' len(positionStr), end='', flush=True)
except KeyboardInterrupt:
print('\nDone')
这是Automate_the_Boring_Stuff一书中的演示代码,用于查找当前鼠标的坐标。
以上就是关于原神位置检测【OpenCV 特征匹配】全部的内容,包括:原神位置检测【OpenCV 特征匹配】、python自动化工具:pywinauto、Electron 框架中调用 Python 构建桌面应用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)