Screenshot from Wiki

本文介绍了截图(Screenshot)的概念及其用途,截图是一种记录显示器显示状态的方法,通常用于捕捉并保存某一时刻的画面,以便于后续查看或分享。文章还提到了一些常用的截图工具。
部署运行你感兴趣的模型镜像

Screenshot

Screenshot 是由计算机使用者截取的一张图片,用于记录显示器、TV或其他可视化输出设备的显示状态。一般情况下,这是一帧数字化图片,采用本地操作系统或者本地运行的软件,当然也可以通过照相机或截获视频输出的设备。Screenshot 用于显示程序或使用者遇见的特别的问题。

内置的截取桌面功能(X Window System下)

  • xwd
  • ImageMagick
  • KSnapshot
  • gnome-screenshot

您可能感兴趣的与本文相关的镜像

EmotiVoice

EmotiVoice

AI应用

EmotiVoice是由网易有道AI算法团队开源的一块国产TTS语音合成引擎,支持中英文双语,包含2000多种不同的音色,以及特色的情感合成功能,支持合成包含快乐、兴奋、悲伤、愤怒等广泛情感的语音。

import os import cv2 import numpy as np import pyautogui from PIL import Image # 支持中文路径的图像读取函数 def imread_chinese(path): """支持中文路径的图像读取""" try: image = Image.open(path) # 将PIL图像转为numpy数组,并转换颜色空间(RGB -> BGR) img_array = np.array(image) if img_array.ndim == 3 and img_array.shape[2] == 4: # 如果有Alpha通道,去除 img_array = img_array[:, :, :3] # 转换为BGR用于OpenCV return cv2.cvtColor(img_array, cv2.COLOR_RGB2BGR) except Exception as e: print(f"读取图像失败 {path}: {e}") return None # 设置图片目录路径 template_dir = r"D:\yunfe\手机悠悠" # 支持的图片格式 supported_extensions = ('.png', '.jpg', '.jpeg', '.bmp', '.tga') def find_images_on_screen(template_dir): # 截取当前屏幕 screenshot_pil = pyautogui.screenshot() screenshot_cv = np.array(screenshot_pil) screenshot_cv = cv2.cvtColor(screenshot_cv, cv2.COLOR_RGB2BGR) results = {} # 遍历目录下所有图片 for filename in os.listdir(template_dir): if not filename.lower().endswith(supported_extensions): continue template_path = os.path.join(template_dir, filename) # 使用支持中文路径的方式读取模板图片 template = imread_chinese(template_path) if template is None: print(f"无法加载图片: {filename}") continue # 获取模板宽高 h, w = template.shape[:2] # 模板匹配:在屏幕截图中查找模板 res = cv2.matchTemplate(screenshot_cv, template, cv2.TM_CCOEFF_NORMED) # 设定匹配阈值 threshold = 0.8 loc = np.where(res >= threshold) matches = [] for pt in zip(*loc[::-1]): # pt 是左上角坐标 (x, y) center_x = pt[0] + w // 2 center_y = pt[1] + h // 2 matches.append((center_x, center_y)) if matches: results[filename] = matches print(f"找到 {filename} 在位置: {matches}") else: results[filename] = [] print(f"未找到 {filename}") return results # 调用函数 if __name__ == "__main__": find_images_on_screen(template_dir) 截取偏移值区域,识别偏移值数字
11-09
----------------------------- 函数1:查找最后一个“启用”,带偏移点击 ----------------------------- def find_last_text_center(text_to_find, offset_x=0, offset_y=0, region=None): “”" OCR查找所有包含text_to_find的文字块,返回Y坐标最大的中心点 + 偏移 “”" if region: left, top, width, height = region screenshot = pyautogui.screenshot(region=region) abs_offset = (left, top) else: screenshot = pyautogui.screenshot() abs_offset = (0, 0) img_cv = cv2.cvtColor(np.array(screenshot), cv2.COLOR_RGB2BGR) gray = cv2.cvtColor(img_cv, cv2.COLOR_BGR2GRAY) data = pytesseract.image_to_data(gray, lang='chi_sim+eng', output_type=pytesseract.Output.DICT) n_boxes = len(data['text']) candidates = [] for i in range(n_boxes): word = data['text'][i].strip() conf = float(data['conf'][i]) if conf < 0 or not word: continue if text_to_find in word: x = data['left'][i] y = data['top'][i] w = data['width'][i] h = data['height'][i] center_x = x + w // 2 center_y = y + h // 2 abs_center_x = center_x + abs_offset[0] abs_center_y = center_y + abs_offset[1] candidates.append((abs_center_x, abs_center_y)) if not candidates: return None # 取 Y 最大的(最下面的) last_center = max(candidates, key=lambda p: p[1]) return last_center[0] + offset_x, last_center[1] + offset_y ----------------------------- 函数2:OCR识别指定文字并点击(支持“删除”、“是”等) ----------------------------- def ocr_and_click(target_text, offset_x=0, offset_y=0, region=None, timeout=5, retry_interval=0.8): “”" 在指定区域内查找目标文字并点击,超时内持续查找,找到即点击并返回True “”" start_time = time.time() while time.time() - start_time < timeout: try: if region: screenshot = pyautogui.screenshot(region=region) abs_left, abs_top = region[0], region[1] else: screenshot = pyautogui.screenshot() abs_left, abs_top = 0, 0 img_cv = cv2.cvtColor(np.array(screenshot), cv2.COLOR_RGB2BGR) gray = cv2.cvtColor(img_cv, cv2.COLOR_BGR2GRAY) data = pytesseract.image_to_data(gray, lang='chi_sim+eng', output_type=pytesseract.Output.DICT) n_boxes = len(data['text']) best_match = None highest_conf = -1 for i in range(n_boxes): word = data['text'][i].strip() conf = float(data['conf'][i]) if conf < 60: # 过滤低置信度 continue if target_text in word or word == target_text: x = data['left'][i] y = data['top'][i] w = data['width'][i] h = data['height'][i] center_x = abs_left + x + w // 2 + offset_x center_y = abs_top + y + h // 2 + offset_y if conf > highest_conf: highest_conf = conf best_match = (center_x, center_y) if best_match: pyautogui.click(best_match[0], best_match[1]) print(f"✅ 成功点击 '{target_text}' -> ({best_match[0]}, {best_match[1]})") time.sleep(1.0) # 点击后稳定时间 return True except Exception as e: print(f"⚠ OCR识别'{target_text}'时出错: {e}") time.sleep(retry_interval) # 小间隔轮询 print(f"❌ 超时未找到 '{target_text}'") return False ----------------------------- 主函数:严格顺序自动化删除流程 格式化
11-13
六自由度机械臂ANN人工神经网络设计:正向逆向运动学求解、正向动力学控制、拉格朗日-欧拉法推导逆向动力学方程(Matlab代码实现)内容概要:本文档围绕六自由度机械臂的ANN人工神经网络设计展开,详细介绍了正向与逆向运动学求解、正向动力学控制以及基于拉格朗日-欧拉法推导逆向动力学方程的理论与Matlab代码实现过程。文档还涵盖了PINN物理信息神经网络在微分方程求解、主动噪声控制、天线分析、电动汽车调度、储能优化等多个工程与科研领域的应用案例,并提供了丰富的Matlab/Simulink仿真资源和技术支持方向,体现了其在多学科交叉仿真与优化中的综合性价值。; 适合人群:具备一定Matlab编程基础,从事机器人控制、自动化、智能制造、电力系统或相关工程领域研究的科研人员、研究生及工程师。; 使用场景及目标:①掌握六自由度机械臂的运动学与动力学建模方法;②学习人工神经网络在复杂非线性系统控制中的应用;③借助Matlab实现动力学方程推导与仿真验证;④拓展至路径规划、优化调度、信号处理等相关课题的研究与复现。; 阅读建议:建议按目录顺序系统学习,重点关注机械臂建模与神经网络控制部分的代码实现,结合提供的网盘资源进行实践操作,并参考文中列举的优化算法与仿真方法拓展自身研究思路。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值