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

重新建设网站的报告泰安招聘网站有哪些

重新建设网站的报告,泰安招聘网站有哪些,外贸网站建设销售常用语,个人网站开发意义文章目录 正文附录A:关于Python的录屏方法总结(来自DeepSeek的回答)1. 使用 pyautogui 和 OpenCV 录制屏幕2. 使用 mss 库(高效屏幕捕获)3. 使用 PIL.ImageGrab 录制屏幕4. 使用 Windows 原生快捷键录制(非…

文章目录

  • 正文
  • 附录A:关于Python的录屏方法总结(来自DeepSeek的回答)
    • 1. 使用 `pyautogui` 和 `OpenCV` 录制屏幕
    • 2. 使用 `mss` 库(高效屏幕捕获)
    • 3. 使用 `PIL.ImageGrab` 录制屏幕
      • 4. 使用 Windows 原生快捷键录制(非 Python 方案)
    • 5. 结合 GUI 实现录屏工具(高级方案)
    • 总结
  • 附录B:关于视频格式转换(以avi2mp4为例)
    • 方法1:使用 `moviepy` 库(推荐)
    • 方法2:使用 `OpenCV` + `FFmpeg`
    • 方法3:直接使用 `FFmpeg` 命令行(最高效)
    • 方法4:使用 `PyAV`(高级控制)
      • 常见问题解决
      • 总结


正文

端午整个烂活。

龙舟争渡2025

旗帜颜色的识别方法选了个最笨的,直接截取那块,然后矩阵相减求F范数(二模),匹配差距最小的那个即可,因此需要提前把所有情况的截图准备好,完整的图片材料和演示视频在https://github.com/caoyang-sufe/LongZhouZhengDu2025

目前速度不是特别快,但也基本够用了。如果间隔取太小容易出错,因为截屏速度跟不上。

# -*- coding: utf-8 -*-
# @author: caoyang
# @email: caoyang@stu.sufe.edu.cnimport cv2
import time
import numpy
import pyautoguifrom PIL import Image
from numpy.linalg import norm
from pynput.keyboard import Key, Controller as KeyController
from pynput.mouse import Button, Controller as MouseControllerimport numpy as npY1, Y2, X1, X2 = 200, 400, 830, 1090	# 这组参数适配1920×1080尺寸的屏幕jcolor_to_key = {'y': 'd', 'r': 'f', 'b': 'j', 'g': 'k'}def easy_show(image: numpy.ndarray, window_title: str="image") -> None:"""Show a image in a new window."""cv2.imshow(window_title,image)cv2.waitKey(0)cv2.destroyAllWindows()def get_screenshot():image = pyautogui.screenshot()image = cv2.cvtColor(np.asarray(image), cv2.COLOR_RGB2BGR)return imagedef load_labels():labels = dict()for color in "yrbg":for n in "12":image = Image.open(f"./temp/{color}{n}.png")image = cv2.cvtColor(np.asarray(image), cv2.COLOR_RGB2BGR)clipped_image = image[Y1: Y2, X1: X2, :]labels[f"{color}{n}"] = clipped_imagereturn labels# 判断旗帜颜色及点击次数
def classify_label(screenshot, labels):clipped_image = screenshot[Y1: Y2, X1: X2, :]diffs = {}for key, label in labels.items():diff = norm(label - clipped_image)diffs[key] = diffprint(diffs)predicted_label = min(diffs, key = lambda x: diffs[x])return predicted_labeldef run():keyboard_controller = KeyController()while True:screenshot = get_screenshot()labels = load_labels()predicted_label = classify_label(screenshot, labels)color = predicted_label[0]key_char = color_to_key[color]n = int(predicted_label[1])for _ in range(n):keyboard_controller.press(key_char)time.sleep(.05)keyboard_controller.release(key_char)time.sleep(.05)time.sleep(.1)time.sleep(2)
run()

烂活完了顺便延申一点,感觉录屏还是有点问题,cv2.waitKey()总是捕获不到键位,之前就发现过这个问题,不知道怎么回事,问了一下deepseek,还是得用ffmpeg才行


附录A:关于Python的录屏方法总结(来自DeepSeek的回答)


1. 使用 pyautoguiOpenCV 录制屏幕

这种方法通过不断截取屏幕画面并将其合成为视频文件来实现录屏。

import pyautogui
import cv2
import numpy as np# 设置录屏参数
screen_size = pyautogui.size()  # 获取屏幕分辨率
fps = 30.0
output_file = "screen_recording.avi"# 创建视频编码器
fourcc = cv2.VideoWriter_fourcc(*"XVID")
out = cv2.VideoWriter(output_file, fourcc, fps, screen_size)# 开始录屏
while True:img = pyautogui.screenshot()  # 截取屏幕frame = np.array(img)frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)  # 转换颜色格式out.write(frame)  # 写入视频文件# 按下 'q' 键停止录制if cv2.waitKey(1) == ord('q'):break# 释放资源
out.release()
cv2.destroyAllWindows()

优点:简单易用,适合基础录屏需求。
缺点:性能较低,可能在高分辨率或高帧率下卡顿。


2. 使用 mss 库(高效屏幕捕获)

mss 是一个高效的跨平台屏幕捕获库,适合高性能录屏。

import mss
import cv2
import numpy as npdef record_screen(output_filename="output.avi", fps=20.0):with mss.mss() as sct:monitor = sct.monitors[1]  # 获取主屏幕fourcc = cv2.VideoWriter_fourcc(*"XVID")out = cv2.VideoWriter(output_filename, fourcc, fps, (monitor["width"], monitor["height"]))while True:img = np.array(sct.grab(monitor))  # 捕获屏幕frame = cv2.cvtColor(img, cv2.COLOR_BGRA2BGR)  # 转换颜色格式out.write(frame)  # 写入视频文件# 按下 'q' 键停止录制if cv2.waitKey(1) & 0xFF == ord("q"):breakout.release()cv2.destroyAllWindows()if __name__ == "__main__":record_screen()

优点:性能较好,支持多显示器。
缺点:需要额外安装 mss 库。


3. 使用 PIL.ImageGrab 录制屏幕

PIL.ImageGrab 是 Python 图像处理库的一部分,适合简单的屏幕捕获。

from PIL import ImageGrab
import cv2
import numpy as npfps = 20
output_file = "recording.avi"# 获取屏幕尺寸
screen = ImageGrab.grab()
width, height = screen.size# 创建视频编码器
fourcc = cv2.VideoWriter_fourcc(*"XVID")
out = cv2.VideoWriter(output_file, fourcc, fps, (width, height))while True:img = ImageGrab.grab()  # 捕获屏幕frame = cv2.cvtColor(np.array(img), cv2.COLOR_RGB2BGR)  # 转换颜色格式out.write(frame)  # 写入视频文件# 按下 'q' 键停止录制if cv2.waitKey(1) == ord('q'):breakout.release()
cv2.destroyAllWindows()

优点:无需额外安装复杂库。
缺点:性能一般,不适合高帧率录制。


4. 使用 Windows 原生快捷键录制(非 Python 方案)

Win11 自带录屏功能:

  • 按下 Win + Shift + S 可调用截图和录屏工具。
  • 录制完成后,可手动保存为 MP4 文件,再用 Python 转换为 GIF(如使用 moviepy 库)。
from moviepy.editor import VideoFileClipdef convert_mp4_to_gif(input_path, output_path, fps=10):clip = VideoFileClip(input_path)clip.write_gif(output_path, fps=fps)# 示例
convert_mp4_to_gif("input.mp4", "output.gif")

优点:无需编程,适合简单需求。
缺点:依赖 Windows 自带功能,灵活性较低。


5. 结合 GUI 实现录屏工具(高级方案)

如果需要更友好的界面,可以结合 PyQt5OpenCV 开发一个录屏工具,支持开始/停止录制、选择区域等功能。


总结

方法适用场景性能复杂度
pyautogui + OpenCV基础录屏较低简单
mss + OpenCV高性能录屏较高中等
PIL.ImageGrab简单录屏一般简单
Windows 原生录屏快速录制无需代码
GUI 工具开发自定义功能复杂

选择哪种方法取决于你的具体需求(如是否需要高帧率、是否要录制音频等)。如果需要更高级的功能(如音频录制),可以结合 pyaudio 库实现。


附录B:关于视频格式转换(以avi2mp4为例)

在Python中,你可以使用多种方法将AVI格式的视频转换为MP4格式。以下是几种常见且高效的方式:

方法1:使用 moviepy 库(推荐)

moviepy 是一个强大的视频处理库,适合简单的格式转换。

from moviepy.editor import VideoFileClipdef avi_to_mp4(input_path, output_path):# 加载AVI视频video = VideoFileClip(input_path)# 写入MP4文件(默认使用H.264编码)video.write_videofile(output_path, codec="libx264", audio_codec="aac")# 关闭视频对象video.close()# 示例
avi_to_mp4("input.avi", "output.mp4")

优点

  • 简单易用,支持音频保留。
  • 自动处理编码兼容性问题(默认使用H.264和AAC)。

安装依赖

pip install moviepy

方法2:使用 OpenCV + FFmpeg

如果已安装FFmpeg,可以通过OpenCV调用FFmpeg进行转换。

import cv2def avi_to_mp4_opencv(input_path, output_path):# 读取AVI视频cap = cv2.VideoCapture(input_path)# 获取视频参数(帧率、分辨率等)fps = cap.get(cv2.CAP_PROP_FPS)width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))# 创建MP4视频写入器(需FFmpeg支持)fourcc = cv2.VideoWriter_fourcc(*'mp4v')  # 或 'avc1'out = cv2.VideoWriter(output_path, fourcc, fps, (width, height))# 逐帧转换while cap.isOpened():ret, frame = cap.read()if not ret:breakout.write(frame)# 释放资源cap.release()out.release()# 示例
avi_to_mp4_opencv("input.avi", "output.mp4")

注意

  • 确保系统已安装FFmpeg(Windows用户需下载并添加环境变量)。
  • OpenCV的MP4编码器(mp4v)可能在某些平台兼容性较差,建议优先用moviepy

方法3:直接使用 FFmpeg 命令行(最高效)

如果追求转换速度或处理大文件,直接调用FFmpeg命令行是最佳选择。

import subprocessdef avi_to_mp4_ffmpeg(input_path, output_path):command = ['ffmpeg','-i', input_path,      # 输入文件'-c:v', 'libx264',     # H.264视频编码'-c:a', 'aac',         # AAC音频编码'-strict', 'experimental','-y',                  # 覆盖输出文件output_path]subprocess.run(command)# 示例
avi_to_mp4_ffmpeg("input.avi", "output.mp4")

优点

  • 转换速度最快,支持所有主流编码。
  • 可自定义参数(如分辨率、比特率等)。

安装FFmpeg

  • Windows:从 FFmpeg官网 下载并添加至系统环境变量。
  • macOS:brew install ffmpeg
  • Linux:sudo apt install ffmpeg

方法4:使用 PyAV(高级控制)

PyAV 是FFmpeg的Python绑定,适合需要精细控制编码参数的场景。

import avdef avi_to_mp4_pyav(input_path, output_path):input_container = av.open(input_path)output_container = av.open(output_path, mode='w')# 配置输出流(复制输入流的参数)in_stream = input_container.streams.video[0]out_stream = output_container.add_stream('h264', rate=in_stream.average_rate)out_stream.width = in_stream.widthout_stream.height = in_stream.height# 逐帧转码for frame in input_container.decode(video=0):packet = out_stream.encode(frame)output_container.mux(packet)# 关闭容器output_container.close()input_container.close()# 示例
avi_to_mp4_pyav("input.avi", "output.mp4")

优点

  • 支持底层编码参数调整。
  • 性能接近原生FFmpeg。

安装依赖

pip install av

常见问题解决

  1. 转换后无声音

    • 确保使用支持音频的编码器(如moviepy或FFmpeg的-c:a aac)。
    • 检查输入文件是否包含音频流(可用ffmpeg -i input.avi查看)。
  2. 转换速度慢

    • 使用FFmpeg命令行并添加 -preset fast 参数。
    • 降低输出分辨率(如 -vf scale=1280:720)。
  3. 文件体积过大

    • 调整比特率(如 -b:v 2000k)。
    • 使用CRF控制质量(如 -crf 23,数值越小质量越高)。

总结

方法适用场景是否需要FFmpeg保留音频
moviepy快速简单转换
OpenCV + FFmpeg需要逐帧处理可选
FFmpeg命令行高性能/批量处理
PyAV高级编码控制

推荐选择

  • 普通用户:直接用 moviepy
  • 开发者或需要批量处理:FFmpeg命令行。

文章转载自:

http://JhSGyJAc.xpqdf.cn
http://J3dZnjp2.xpqdf.cn
http://O3rnnYSY.xpqdf.cn
http://fiTwe5Jj.xpqdf.cn
http://veEUQPru.xpqdf.cn
http://wOeIdlTS.xpqdf.cn
http://JglRY3JP.xpqdf.cn
http://Ts9RgmlJ.xpqdf.cn
http://Lkjbqzi3.xpqdf.cn
http://fJ29gk2h.xpqdf.cn
http://gGNV1J4e.xpqdf.cn
http://ZQmVlCik.xpqdf.cn
http://d3YTqBcV.xpqdf.cn
http://s0NCXZve.xpqdf.cn
http://gIycRajY.xpqdf.cn
http://0Rf1sgqD.xpqdf.cn
http://ml3Pvs8S.xpqdf.cn
http://ag8VL4f9.xpqdf.cn
http://iiklP7WI.xpqdf.cn
http://mWn0pWVs.xpqdf.cn
http://yFiu7qJc.xpqdf.cn
http://AwuS2KeL.xpqdf.cn
http://i0FLAAk6.xpqdf.cn
http://L29k1V2n.xpqdf.cn
http://FVadgg39.xpqdf.cn
http://eBLSVK0N.xpqdf.cn
http://31u8657o.xpqdf.cn
http://gqlJl8d4.xpqdf.cn
http://Cnyn433i.xpqdf.cn
http://SnGw4lz5.xpqdf.cn
http://www.dtcms.com/wzjs/621587.html

相关文章:

  • 广东网站建设网站汉中门户网
  • 微信公众号怎么创建文章多网站怎么做seo
  • 1688网站一起做网店单位网站怎么做
  • 厚街网站建设费用欢迎页网页设计作品欣赏
  • 云主机怎么装网站网站怎么做 流程图
  • 公司网站关键词优化分析网络营销的特点
  • 网站开发流程步骤枣庄网站建设枣庄
  • 网站域名与网站首页网址福建省住房建设厅网站
  • 网站建设的运营计划网络内容建设包括什么
  • 做网站需要那些软件濮阳做网站的公司
  • 装饰工程设计东莞网站建设如何找百度做网站
  • 国外源代码网站网站快照长期不更新
  • 网站建设推广语制作钓鱼网站的费用
  • 论文引用网站怎样做脚注吉林省建设厅网站
  • 青州网站建设青州my最新域名是什么
  • 商城平台网站开发深圳做网站关键词必须要中文网址
  • 英文WordPress站点切换为中文做企业的网站都要准备什么
  • 要学做游戏上什么网站学好网络工程师招聘
  • 建站必须要域名吗建设网站注意什么
  • 永州做网站wordpress文章更新后
  • 网站建设模板成功案例微信怎么推广自己的产品
  • 公司logo设计注意事项seo常规优化
  • 网站计算机培训机构哪个最好美食网站开发前期准备
  • 网站下拉菜单代码广州 环保 凡人网站建设
  • 建设行政主管部门相关网站设计需要的软件
  • 博客网站 wordpress在线购物网站建设的需求分析
  • 企业网站建设模版做网站可以不做后端吗
  • 赶集网站建设多少钱asp.net 移动网站开发
  • 临沂网站设计制作网站设计app
  • 网站建设的客户怎么找thinkphp网站开发教程