hgjazhgj / FGO-py

自动爬塔! 自动每周任务! 全自动免配置跨平台的Fate/Grand Order助手.启动脚本,上床睡觉,养肝护发,满加成圣诞了解一下?
http://fgo-py.hgjazhgj.top/
GNU Affero General Public License v3.0
1.53k stars 179 forks source link

isNextLottery #52

Closed hgjazhgj closed 2 years ago

hgjazhgj commented 2 years ago

Discussed in https://github.com/hgjazhgj/FGO-py/discussions/51

Originally posted by **oTnTh** July 3, 2022 测试用的机器是一台小米手机,打开USB调试。PC这边是relase里的FGO-py.Portable,Win11。 执行过169 invoke,screenshot命令截图是这样的: ![Capture_2022-07-03_20 11 08](https://user-images.githubusercontent.com/92753/177040939-3fe0cbdf-1197-418b-9e4b-2fa057ec42ae.png) 我尝试将Detect()_crop()里的cv2.imwrite那一行反注释,fgoTemp目录内保存下来的图片是这样的: ![Crop_2022-07-03_20 07 12_(830, 231, 879, 260)](https://user-images.githubusercontent.com/92753/177040465-1af29916-9190-49b6-ae23-c0353ed5403a.png) 这个图片是45\*25像素,24位色。FGO-py自带的jackpot.png是42\*22像素,32位色。尺寸不一样,色深也不一样。 尝试将cv2.imwrite写入的png直接改名jackpot.png,然后复制到fgoImage里去,则fgoDetect.py第9行报错: `IMG=type('IMG',(),{i[:-4].upper():(lambda x:(x[...,:3],x[...,3]))(cv2.imread(f'fgoImage/{i}',cv2.IMREAD_UNCHANGED))for i in os.listdir('fgoImage')if i[-4:]=='.png'})` `IndexError: index 3 is out of bounds for axis 2 with size 3` (抱歉,python不熟,这一行看不太懂…) mail那边的问题类似,只会一直往下滑,但是并没有分拣出单个的狗粮。 我想请问如果想更新识别点图片,相关坐标应该去哪找? fgoDetect.py报错,是不是截图的图片格式有问题? 谢谢。
hgjazhgj commented 2 years ago

@oTnTh image 左侧是你提供的截图,右侧是我自己的截图
用肉眼观察就能发现,你的画面顶部和底部各有两个像素的黑边--这不会影响现有的识别,因为在设计时我就考虑到了这种情况,所有的裁剪都留出了至少2个像素的余量(这就是为什么我的图片比你的小一圈),以及你的画面亮度偏暗--这导致识别失败
由于你明确说了screenshot命令截图,所以我认为你提供了正确的截图,看来你确实需要自己制作截图
但是这很奇怪,因为这样一来其他的图像识别也会出错,你只有这一个地方出问题吗? 另外,image这是什么,是否由此导致画面偏暗?

oTnTh commented 2 years ago

抱歉来得有点晚,花了点时间测试。

一句话省流:FGO-py看起来没啥问题,我之前遇到的那些奇怪的事情,可能是其他程序导致的。

因为是最近才对这个问题感兴趣,所以一次性搜了好几个类似的程序回来(你好奇的那个东西是FGA的按钮)。应该是因为我交叉使用各种不同的程序,又没有重启手机,导致互相影响了的关系。

只要手机重启以后,直接从桌面进游戏。PC那边python fgo.py cli,然后call jackpot,一切正常。

谎报军情了不好意思(磕头谢罪。

各种感谢。

oTnTh commented 2 years ago

今天我再次尝试用FGO-py抽池子的时候,又发生了前述的问题,而且重启并没有解决。

之前经你的提醒,讲到颜色的问题,我试着将护眼模式和深色模式都关掉以后,FGO-py又工作正常了。

虽然我已经闹过一次乌龙了,不敢说这次真的找到了问题所在,但就当单纯为跑到这里来找信息的人提供一个思路吧。(

hgjazhgj commented 2 years ago

只能说不愧是小米
我的一加8pro(氢OS11)以及大部分手机都能在截图时获取到无视亮度与护眼模式等显示设置的截图,这保证了截图后在相册中查看时屏幕能够显示与截图时完全相同的内容,即--截图与应用相关而与用户无关
我想如果你把屏幕亮度调低又打开护眼模式与暗色模式,使用按键组合(比如同时按下音量+与电源键)进行截图,你的手机应该不会保存一张又黑又黄的截图吧...又或者使用scrcpy等投屏软件时应该是投射正常色彩的画面吧...
如果确实如此,那有便是我所使用的安卓自动化框架airtest的问题,确认后我会考虑去开个issue

oTnTh commented 2 years ago

抽完池子我又测试了一下,看起来问题有可能出在深色模式上。

这个手机是我的备机,就从来没正经用过。某次国行固件升级以后,谷歌全家桶就不能用了,黑名单那种,即使自己装上也不能用。所以我就刷了欧版的固件,v12.5。MIUI 13还有没有这个问题,我目前没法测试。

041

042

深色模式打开时,这个“自动调节字体和背景颜色”默认就是打开的,并且其效果也会反映到截图上。

下面那个“应用单独设置”,看字面的意思是可以单独设置某一个APP是否开关深色模式。但是我试了一下,这个开关似乎是无效的,没看出什么区别。

我顺便也测试了一下FGA,这个APP倒是不受深色模式的影响,工作正常。

要是有啥需要补充的信息,尽管说。