当前位置: 首页 > news >正文

密云建设银行招聘网站深圳航空公司官方网站首页

密云建设银行招聘网站,深圳航空公司官方网站首页,嘉兴企业自助建站系统,自己做h5网站仅做学习交流#xff0c;非盈利#xff0c;侵联删#xff08;狗头保命) 一、概述 1.1 效果 总的来说#xff0c;这种方式是通过图像识别来完成的#xff0c;不侵入游戏#xff0c;不读取内存#xff0c;安全不被检测。 1.2 前置知识 游戏中有各种不同的枪械#x…仅做学习交流非盈利侵联删狗头保命) 一、概述 1.1 效果 总的来说这种方式是通过图像识别来完成的不侵入游戏不读取内存安全不被检测。 1.2 前置知识 游戏中有各种不同的枪械不同的枪械后坐力不一样射速也不同。相同的枪械装上不同的配件后后坐力也会发生变化。枪械的y轴上移是固定的x轴是随机的因此我们程序只移动鼠标y轴。x轴游戏中手动操作。 1.3 实现原理简述 通过python中的pynput模块监听键盘鼠标。 监听鼠标左键按下这个时候开始移动鼠标。左键抬起终止移动。 监听键盘按键比如tab键这时打开背包截屏开始识别装备栏。 通过python的pyautogui模块来截屏可以截取屏幕指定位置。 通过python的opencv模块来处理截取的图片。 通过SSIM算法来对比图片相似度获取到装备栏的武器、配件。 通过python的pydirectinput操作鼠标移动。 二、详解 2.1 pynput监听键盘 import pynput.keyboard as keyboard# 监听键盘 def listen_keybord():listener keyboard.Listener(on_pressonPressed, on_releaseonRelease)listener.start()pynput的监听为异步事件但是会被阻塞所以如果事件处理事件过长得用异步处理。 2.2 监听事件 创建了c_equipment类来封装武器信息。 重点在tab键的监听使用异步来检测装备信息。 def onRelease(key):try:if 1 key.char:c_equipment.switch 1 #主武器1elif 2 key.char:c_equipment.switch 2 #主武器2elif 3 key.char:c_equipment.switch 3 #手枪 switch3的时候不压枪elif 4 key.char:c_equipment.switch 3 #刀具elif 5 key.char:c_equipment.switch 3 #手雷except AttributeError:if tab key.name: #tab键异步操作检测asyncHandle()elif num_lock key.name: #小键盘锁用来控制程序开关changeOpen()elif shift key.name: c_contants.hold False2.3 pyautogui截屏 检测装备首先要在打开装备栏的时候截屏。 pyautogui.screenshot(region[x, y, w, h]) x,y分别表示坐标w,h表示宽度和高度。 截取之后为了方便对比图片需要将图片二值化然后保存到本地。 完整代码如下 import pyautoguidef adaptive_binarization(img):#自适应二值化maxval 255blockSize 3C 5img2 cv2.adaptiveThreshold(img, maxval, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, blockSize, C)return img2# 屏幕截图 def shotCut(x, y, w, h):im pyautogui.screenshot(region[x, y, w, h])screen cv2.cvtColor(numpy.asarray(im), cv2.COLOR_BGR2GRAY)temp adaptive_binarization(screen)return tempdef saveScreen():screen1 shotCut(1780, 125, 614, 570)cv2.imwrite(./resource/shotcut/screen.bmp, screen1)2.4 素材准备 屏幕截图处理后如上在装备识别之前我们需要先准备很多素材图片用来对比。 比如:武器名、枪托、握把、枪口 武器名 枪托 2.5 裁剪图片 为了方便图片对比我们需要将截取的装备栏部分的图片裁剪成和素材一样大小的图片。 比如我们要检测武器一的名字 #读取之前的截屏 screen cv2.imread(./resource/shotcut/screen.bmp, 0) #裁剪出武器1名字 screenWepon1 screen[0:40, 45:125] #拿裁剪的图片和武器素材的目录作为入参进行对比 w1Name compareAndGetName(screenWepon1, ./resource/guns/)2.6 对比图片 #对比图片获取名字 def compareAndGetName(screenImg, dir):#获取目录下所有文件content os.listdir(dir)name nonemax 0#遍历文件for fileName in content:#使用opencv读取文件curWepone cv2.imread(dir fileName, 0)#使用SSIM算法拿到图片相似度res calculate_ssim(numpy.asarray(screenImg), numpy.asarray(curWepone))#获取相似度最大的if max res and res 0.5:max resname str(fileName)[:-4]return nameSSIM算法 def calculate_ssim(img1, img2):if not img1.shape img2.shape:raise ValueError(Input images must have the same dimensions.)if img1.ndim 2:return ssim(img1, img2)elif img1.ndim 3:if img1.shape[2] 3:ssims []for i in range(3):ssims.append(ssim(img1, img2))return numpy.array(ssims).mean()elif img1.shape[2] 1:return ssim(numpy.squeeze(img1), numpy.squeeze(img2))else:raise ValueError(Wrong input image dimensions.)到这我们就能获取到装备栏1位置的武器名字了。 2.7 操作鼠标 知道武器名字后同理我们可以获取到装备的配件。 然后监听鼠标左键按下然后开始下移鼠标。 我们以m762武器为例 射速86, 每一发子弹间隔86毫秒 后坐力 [42, 36, 36, 36, 42, 43, 42, 43, 54, 55, 54, 55, 54, 55, 54, 55, 62, 62, 62, 62, 62, 62, 62, 62,62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 77, 78, 77, 78] 表示每发子弹打出后需要在y轴下移的距离用来与后坐力对冲。 def moveMouse(): #从识别的数据中再更具当前选择的武器获取此刻的武器比如按下1键武器装备栏1为m762那么此时武器就是m762curWepone getCurrentWepone()if (curWepone.name none):return#基础y轴补偿没任何配件basic curWepone.basic#射速speed curWepone.speedstartTime round(time.perf_counter(), 3) * 1000for i in range(curWepone.maxBullets):#是否可以开火比如左键抬起就中断。if not canFire():break#系数比如按住shift屏息就需要再原来基础上乘1.33holdK 1.0if c_contants.hold:holdK curWepone.hold#乘以系数后实际的移动距离moveSum int(round(basic[i] * curWepone.k * holdK, 2))while True:if (moveSum 10):#移动鼠标pydirectinput.move(xOffset0, yOffset10, relativeTrue)moveSum - 10elif (moveSum 0):pydirectinput.move(xOffset0, yOffsetmoveSum, relativeTrue)moveSum 0elapsed (round(time.perf_counter(), 3) * 1000 - startTime)if not canFire() or elapsed (i 1) * speed 10:breaktime.sleep(0.01)代码中的while循环 其实再第一发子弹射出后我们只需要下移42的距离然后计算出需要等待的时间0.086-移动鼠标的时间然后第二发子弹射出以此类推。 while循环的作用是防止屏幕抖动太厉害。因为直接移动42的距离游戏中抖的厉害所以我们再86毫秒的间隔里分了多次来移动鼠标。 python中的sleep函数不准确所以我们要自己来计时防止错过每发子弹的时间间隔。 不准确还有个好处随机正好不用自己来随机防止检测了。 三、最麻烦的部分 每个枪的后坐力都不一样我们需要自己去游戏的训练场一发发子弹的调试获取准确的补偿数据。 四、最后 代码上传到gitee感兴趣的一起交流。 https://gitee.com/lookoutthebush/PUBG
http://www.sczhlp.com/news/219004/

相关文章:

  • 优良的网站邮箱服务器提供商ispwordpress 数据备份插件
  • 网站代码怎么做免费企业网站源代码
  • 个人免费网站申请注册wordpress查看ip帐号密码
  • 优秀的手机网站案例分析蓝色门户网站
  • 网上做代卖的网站做类似淘宝一样的网站有哪些
  • 做优惠卷网站倒闭了多少成都哪家做网站建设比较好
  • 网站建设财务上怎么处理公司画册设计模板
  • 泰和网站建设哈尔滨市建设工程交易网
  • 专注吴中网站建设推广临时网页生成
  • 南宁百度网站建设公司那个网站做外贸
  • 深圳seo网站排名优化佛山网站优化有
  • wordpress文档甘肃网站优化
  • 黄页网站怎么做 获取企业信息深圳出名网站建设公司
  • 如何给网站备案wordpress固定链接后500错误
  • 未来商城网站建设网络推广外包
  • 2025 年复合材料桥架厂家最新推荐榜:聚焦企业专利技术、品质管控及知名客户合作案例的权威解析
  • 记2025羊城杯部分题目的解题思路
  • 2025代码托管平台全景分析:本土化突围与全球化博弈
  • PWM实现LED渐变效果及彩灯控制
  • 做网站套模板网站建设与管理 期末
  • 2025年法兰保护罩厂家推荐排行榜,阀门保温罩,法兰罩,法兰防溅罩,法兰保护套,专业防护与定制服务深度解析
  • 官网网站建设平台东莞房价2023最新价格
  • 网站分为哪几种类型惠州附近公司做网站建设多少钱
  • 怎么看一个网站做的好不好网站开发融资
  • 高级网站开发工程师证书手绘风格 网站
  • 网站服务器可以自己做吗安装wordpress 空白页
  • 乐山网站开发asp.net网站建设实战 pdf
  • wordpress建站给媒体分类wordpress文章微信分享代码
  • 中山网站改版电子商务交易平台
  • APP加网站建设预算多少钱经营地址怎么在国税网站做更改