好物设计- 实现区域图片变化自动截图

工具–Py即可

重点怎么获取窗口句柄?
使用 spyxx 可以获得句柄 (相当一个窗口的ID,无论窗口怎么变化ID不变我们都可以找到该窗口的详细信息)
替换句柄就可以,也可以不用句柄之间改截图区域
实战图片
在这里插入图片描述

import pygetwindow as gw
import pyautogui
import time
import numpy as npdef calculate_image_difference(image1, image2):gray_image1 = image1.convert('L')gray_image2 = image2.convert('L')array1 = np.array(gray_image1)array2 = np.array(gray_image2)hist_diff = np.sum(np.abs(np.histogram(array1, bins=256, range=(0, 256))[0] - np.histogram(array2, bins=256, range=(0, 256))[0]))diff_percentage = (hist_diff / float(array1.size)) * 100return diff_percentage# 使用窗口句柄
window_handle = 0x000715F0while True:# 获取窗口对象window = gw.Window(window_handle)# 获取窗口的位置和大小x, y, width, height = window.left, window.top, window.width, window.height# 设置要截图的区域region = (x, y, width, height)# 获取当前截图current_screenshot = pyautogui.screenshot(region=region)# 等待一段时间,可以根据实际情况调整time.sleep(1)# 再次获取窗口的位置和大小x, y, width, height = window.left, window.top, window.width, window.height# 再次设置要截图的区域region = (x, y, width, height)# 再次获取截图updated_screenshot = pyautogui.screenshot(region=region)# 计算图像差异百分比diff_percentage = calculate_image_difference(current_screenshot, updated_screenshot)# 如果差异超过20%if diff_percentage > 20.0:# 保存当前截图timestamp = time.strftime("%Y%m%d%H%M%S")file_name = f"screenshot_{timestamp}.png"updated_screenshot.save(file_name)print(f"截屏已保存为 {file_name}, 图像差异:{diff_percentage:.2f}%")

如果想一点像素的改变也截图可以更改这里,改为0就可以

# 如果差异超过20%if diff_percentage > 20.0:# 保存当前截图timestamp = time.strftime("%Y%m%d%H%M%S")file_name = f"screenshot_{timestamp}.png"updated_screenshot.save(file_name)print(f"截屏已保存为 {file_name}, 图像差异:{diff_percentage:.2f}%")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/236179.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

14:00面试,14:08就出来了,问的问题有点变态。。。

从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到5月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%…

手机怎么设置每年公历或农历生日提醒?生日提醒设置小妙招

生日是一个人在一年中比较特殊的日子之一,人们通常希望能够在这一天得到亲朋好友的祝福和庆祝。然而,随着人们生活节奏的加快,很多人表示自己很容易忘记他人的生日,导致不能够及时送出祝福和礼物。如果经常忘记亲朋好友的生日&…

ardupilot开发 --- waf 篇

查看waf编译都有哪些可用选项? Tools/ardupilotwaf/boards.py 中查看。 怎么打开下面的条件编译? 只需在 Tools/ardupilotwaf/boards.py 中查找关键字 “ AP_RTC_ENABLED ”

【powershell】Windows环境powershell 运维之历史文件压缩清理

🦄 个人主页——🎐开着拖拉机回家_Linux,大数据运维-CSDN博客 🎐✨🍁 🪁🍁🪁🍁🪁🍁🪁🍁 🪁🍁🪁&am…

vue 使用 html2canvas 截取图片保存

vue 使用 html2canvas 截取图片保存 好久没有写博文了,写够了,没啥想写的了,这个号算是废了,哎,气人啊!越来越胖,越来越懒了。 html2canvas 简介 html2canvas是一个JavaScript库,它…

【算法集训】基础数据结构:十一、邻接矩阵

今天题目难度比较大&#xff0c;后两道用的动态规划&#xff0c;后面再理解理解。 第一题 547. 省份数量 void dfs(int i, int n, int ret, int * color, int ** isConnected) {if(color[i] ! -1) return ;color[i] ret;for(int j 0; j < n; j) {if(isConnected[i][j]) …

算法训练第四十三天|1049. 最后一块石头的重量 II、494. 目标和、474. 一和零

1049. 最后一块石头的重量 II&#xff1a; 题目链接 有一堆石头&#xff0c;用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 y&#xff0c;且 x <…

为你自己学laravel - 15 - model的更新和删除

为你自己学laravel。 model的部分。 这一次讲解的是model当中怎么从数据库当中更新数据和删除数据。 先从数据库当中抓出来资料。 当然我们是使用php artisan tinker进入到终端机。 我们的做法是想要将available这个栏位修改成为true。 第一种更新方法 上面我们就是修改了对…

python实现一个图片查看器——可拖动、缩放和颜色画笔

目录 0 前言1 准备工作2 窗口布局3 图片显示功能3 图片拖拽功能4 图片缩放功能&#xff08;难度大&#xff09;5 画笔功能6 颜色选择功能后记源码 0 前言 在现如今的数字时代&#xff0c;我们对于图片的需求越来越大。无论是在工作中&#xff0c;还是在日常生活中&#xff0c;…

log4js-node在nodejs项目中的使用示例

在Node.js项目中使用log4js-node模块可以帮助你记录日志。以下是一个简单的示例&#xff0c;演示了如何在Node.js项目中使用log4js-node模块&#xff1a; 首先&#xff0c;你需要安装log4js-node模块。在终端中执行以下命令&#xff1a; npm install log4js 接下来&#xff…

学习使用echarts图表中formatter的用法,格式化数字金额,控制x轴、y轴展示长度

学习使用echarts图表中formatter的用法&#xff0c;格式化数字金额&#xff0c;控制x轴、y轴展示长度 控制金额长度两位小数&#xff0c;并去除多余.00效果图 控制文字长度完整代码 控制金额长度 series: [{name: ,type: bar,sort: none,label: { //饼图图形上的文本…

pcl三角面片拼接和PCL库的bug修复

PCL面片拼接代码如下,我使用的1.10.1PCL,这个版本的库存在问题会导致输出的结果错误,在cc会报错: An error occurred while loading ‘combined mesh’ // 读取第一个PLY文件pcl::PolygonMesh mesh1;pcl::io::loadPLYFile("hole.ply", mesh1);// 读取第二个PLY文件pc…

GitHub two-factor authentication开启教程

问题描述 最近登录GitHub个人页面动不动就有一个提示框”… two-factor authentication will be required for your account starting Jan 4, 2024 …“&#xff0c;点击去看了一下原来是GitHub对所有的用户登录都要开启双重身份认证&#xff0c;要在1月4号前完成 解决办法 …

玩转大数据19:数据治理与元数据管理策略

随着大数据时代的到来&#xff0c;数据已经成为企业的重要资产。然而&#xff0c;如何有效地管理和利用这些数据&#xff0c;成为了一个亟待解决的问题。数据治理和元数据管理是解决这个问题的关键。 1.数据治理的概念和重要性 数据治理是指对数据进行全面、系统、规范的管理…

基于Spring的枚举类+策略模式设计(以实现多种第三方支付功能为例)

摘要 最近阅读《贯彻设计模式》这本书&#xff0c;里面使用一个更真实的项目来介绍设计模式的使用&#xff0c;相较于其它那些只会以披萨、厨师为例的设计模式书籍是有些进步。但这书有时候为了使用设计模式而强行朝着对应的 UML 图来设计类结构&#xff0c;并且对设计理念缺少…

易点易动固定资产集成飞书,实现固定资产的一站式高效管理

在现代商业环境中&#xff0c;固定资产管理对于企业的运营和成功至关重要。然而&#xff0c;传统的资产管理方式往往繁琐、容易出错&#xff0c;并且缺乏实时性和准确性。为了解决这些挑战&#xff0c;易点易动与飞书进行了集成合作&#xff0c;推出了一种全新的解决方案&#…

common-pool的GenericObjectPool源码创建borrowObject方法研读

对象池主要管理对象的池&#xff0c;包含借用&#xff0c;归还&#xff0c;添加对象&#xff0c;校验对象是否有效等管理功能 public T borrowObject(final long borrowMaxWaitMillis) throws Exception {assertOpen();final AbandonedConfig ac this.abandonedConfig;if (ac …

ASP.NET Core面试题之Redis高频问题

&#x1f388;&#x1f388;在.NET后端开发岗位中&#xff0c;如今也少不了、微服务、分布式、高并发高可用相关的面试题&#x1f388;&#x1f388; &#x1f44d;&#x1f44d;本文分享一些整理的Redis高频面试题&#x1f389; &#x1f44d;&#x1f44d;机会都是给有准备…

Springboot访问html页面

目录 1、html页面创建 2、打开application.properties,添加如下配置 3、Controller中的代码 4、测试效果 项目结构如图 1、html页面创建 在原有的项目resouces目录下创建static包,并在static下创建pages,然后在pages包下index.html. index.html内容 <!DOCTYPE html>…

机器学习基础实验(人口收入普查数据探索)

本次挑战中&#xff0c;你需要运用 Pandas 探索数据&#xff0c;并回答有关 Adult 数据集 的几个问题。Adult 数据集是一个关于人口收入普查的数据集&#xff0c;其包含多个特征&#xff0c;目标值为类别类型。 首先&#xff0c;我们加载并预览该数据集。 import warnings i…