首页 > 编程语言 >使用Jupyter(python+opencv)实现很难的脚本-Day1

使用Jupyter(python+opencv)实现很难的脚本-Day1

时间:2024-06-17 16:30:09浏览次数:12  
标签:pic python random notepad Day1 opencv time print match

由于xx西游没办法自动挖图,于是懒狗的我只能自己写一段脚本来实现挖土自由。

首先介绍几个比较重要的库都需要自行install。

from PIL import Image   #用于计算图片大小的库
import pyautogui    #用于抓取目标位置的库
import pygetwindow as gw    #用于得到窗口大小的库
import time #计时器

接下来先设置操作时间

# 设置操作持续的时间(例如300秒,即5分钟)
duration = 300
start_time = time.time()# 获取开始时间
end_time = start_time + duration# 获取结束时间

然后按照比例对目标图片进行缩放,不然找不到!!

#获得游戏的窗口大小
notepad = gw.getWindowsWithTitle('xx西游')[0]
print(f"窗口位置和大小: {notepad.left}, {notepad.top}, {notepad.width}, {notepad.height}")

### 得到pic原图所需要的缩放大小
picScale_x = notepad.width/1722
picScale_y = notepad.height/999
print(f"缩放大小: {picScale_x}, {picScale_y}")

### 加载原始图像
pic_image = Image.open(r"E:\footbook\pic_test1.png")    #放自己的地址

# 调整图像大小
new_size = (int(pic_image.width * picScale_x), int(pic_image.height * picScale_y))
resized_image = pic_image.resize(new_size, Image.ANTIALIAS)
resized_image.save('E:\\footbook\\pic_test2.png')

找目标并点击。

# 持续尝试匹配,直到时间结束
while time.time() < end_time:
    try:
        # 使用调整后的图像进行匹配
        match = pyautogui.locateOnScreen('E:\\footbook\\pic_test2.png', confidence=0.7)
        if match:
            print(f"找到一个匹配位置:{match}")
            random_x = 2 * random.random() - 1
            random_y = 2 * random.random() - 1
            print(f"随机数为:{random_x}, {random_y}")
            clickPos_x = match.left + match.width/(2) + random_x * 30
            clickPos_y = match.top + match.height*(4/5) + random_y * 10
            print("x = ", clickPos_x, "y = ", clickPos_y)
            pyautogui.click(clickPos_x, clickPos_y, button='left')  # 单击左键
        time.sleep(5)  # 在尝试之间等待2秒
    except Exception as e:
        print(f"没找到图片")
        time.sleep(5)  # 如果遇到错误,等待2秒后再次尝试
print("程序结束")

以上代码从头下到脚就能编译了,未来目标是实现一条

标签:pic,python,random,notepad,Day1,opencv,time,print,match
From: https://blog.csdn.net/qq_52933098/article/details/139726787

相关文章

  • 使用OpenCV进行实时性别和年龄识别
            在计算机视觉领域,使用深度学习技术进行实时性别和年龄识别是一项具有挑战性和实用性的任务。本文将深入解析一个使用OpenCV和预训练模型实现的实时性别和年龄识别代码,并逐行进行详细的注释解析,帮助读者理解代码的工作原理和实现细节。importcv2importnumpy......
  • 开发一个python工具,pdf转图片,并且截成单个图片,然后修整没用的白边及循环遍历文件夹全
    今天推荐一键款本人开发的pdf转单张图片并截取没有用的白边工具一、开发背景:业务需要将一个pdf文件展示在前端显示,但是基于各种原因,放弃了h5使用插件展示原因有多个,文件资源太大加载太慢、pdf展示兼容性问题、pdf展示效果不好、pdf字体有时缺失等等,所以将项目中的协议等,全部由p......
  • python中常见re正则表达式(整数、小数、邮箱、号码、车牌、x开头y结尾)大合集(值得收
    目录专栏导读库的介绍库的安装1、匹配整数2、匹配某几位整数3、匹配小数4、匹配电话格式1:11位数字格式2:187-12341234或者187-1234-1234格式3:(123)456-7890,或者+86123-456-78905、匹配邮箱6、匹配车牌7、xx为开头yy为结尾9、匹配中文10、匹配非中文总结专栏导读......
  • 交叉编译python第三方库
    这里我们以编译androidpython程序为例工具crossenv名词对于交叉编译的各个部分,没有标准的词汇表,不同的资源经常会使用相互矛盾的术语。为了避免混淆,我们只使用GNU术语,这是Python本身使用的。host就是你编译出来的包要运行的平台,比如这里是Androidbuild进......
  • Python中的迭代器与生成器
    目录一、引言二、迭代器(Iterator)迭代器的概念迭代器的使用三、生成器(Generator)生成器的概念生成器的使用四、迭代器与生成器的性能与内存优化性能优化内存优化五、案例分析六、进阶用法推导式(Comprehensions)生成器表达式(GeneratorExpressions)七、总结一、引......
  • 精选了10个Python实战项目(附源码),拿走即用!
    ① 猜字游戏在这个游戏中,你必须一个字母一个字母的猜出秘密单词。如果你猜错了一个字母,你将丢掉一条命。正如游戏名那样,你需要仔细选择字母,因为你的生命数量非常有限。importrandom#生命次数lives=3#神秘单词,随机选择words=['pizza','fairy','teeth','......
  • 小白的Python+Anaconda+vscode安装教程(win11系统手把手教学)
    python下载安装python下载安装过程下载地址:https://www.python.org/![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/33bd022a0d104a22b9e8caf7abb4e294.png我这里选择了3.7.9版本选中刚才下载的.exe文件,右键-打卡上一个页面点击customizinstallation后......
  • Python遥感影像叠加分析:基于一景数据提取另一数据
      本文介绍基于Python中GDAL模块,实现基于一景栅格影像,对另一景栅格影像的像元数值加以叠加提取的方法。  本文期望实现的需求为:现有一景表示6种不同植被类型的.tif格式栅格数据,以及另一景与前述栅格数据同区域的、表示植被参数的.tif格式栅格数据;我们希望基于前者中的植被类......
  • OpenCV中绘制多边形的函数:fillPoly与polylines
    一、函数接口介绍1.1fillPoly函数这是个重载函数,有2个实现,具体如下:1、重载1voidfillPoly(Mat&img,constPoint**pts,constint*npts,intncontours,constScalar&color,intlineType......
  • 盘点一个Python自动化办公的问题
    大家好,我是Python进阶者。一、前言前几天在Python铂金交流群【逆光】问了一个Python自动化办公的问题,问题如下:问题我现在有两个表a、b,for循环a、b,如果a的条件满足b,则把b的值赋给a,目前a有7万条数据,b有300条。我写的代码20分钟都没跑完。这是代码,请问改怎么解决?二、实现过......