三分钟带你用python写一个自己的播放器

使用OpenCV处理视频流
本文介绍如何利用OpenCV库读取并处理视频流,包括显示视频帧和将处理后的视频保存为新的文件格式。通过具体代码示例,读者可以学习到如何控制视频的播放、暂停及退出操作。

步骤:

1.用OpenCV读取视频流;

2.用cv2.show()把读取的帧显示出来即可。

看代码:

#coding:utf-8
import os
import cv2


def video_reader(video_path):
    video = cv2.VideoCapture(video_path)
    succ, frame = video.read()
    height, width, _ = frame.shape

    fourcc = cv2.VideoWriter_fourcc(*'MJPG')
    out = cv2.VideoWriter('result.avi', fourcc, 10.0, (width, height))


    while succ:
        succ, frame = video.read()
        if not succ:
            break
        out.write(frame)
        cv2.imshow("test_video", frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    cv2.destroyAllWindows()
    video.release()
    out.release()


if __name__ == "__main__":
    video_path = "test.mp4"
    video_reader(video_path)

参考:https://blog.youkuaiyun.com/Guo_Python/article/details/105821786

<think>我们被要求编一个Python脚本,每三分钟模拟一次鼠标点击。 首先,我们需要考虑如何模拟鼠标点击。在Python中,我们可以使用`pyautogui`库来实现模拟鼠标操作。 其次,我们需要定时执行,可以使用`time`模块中的`sleep`函数来等待三分钟(即180秒)。 步骤: 1. 安装必要的库:pyautogui 如果还没有安装,可以通过pip安装:pip install pyautogui 2. 编一个循环,在每次循环中执行以下操作: a. 模拟鼠标点击(比如点击当前位置,或者指定位置) b. 等待180秒(3分钟) 注意:为了防止脚本无限运行,我们可以设置一个运行次数,或者让用户手动停止(例如按Ctrl+C)。 但是,用户没有指定点击的位置和按钮(左键、右键等)。我们假设是左键单击,并且点击当前鼠标所在位置(或者我们可以指定坐标,但这里没有给定坐标,所以我们可以先使用当前位置)。 另外,我们可能需要考虑在点击之间保持系统正常运行,并且避免在脚本运行时移动鼠标(如果使用当前位置的话)。 我们可以这样设计: - 使用`pyautogui.click()`来模拟点击。默认是左键在当前鼠标位置点击。 - 如果我们想指定位置,可以使用`pyautogui.click(x, y)`,但这里没有指定,所以我们可以先使用当前位置。 但是,如果用户希望点击一个固定的位置,我们可以要求用户先设置一个坐标,或者通过其他方式获取坐标。不过问题中没有明确,我们先按当前位置处理。 另外,为了避免脚本在运行中无法停止,我们可以设置一个运行次数的上限,或者让用户通过某种方式停止(比如设置一个总运行时间)。 但是,用户要求是每三分钟一次,没有说总次数,所以我们可以让它一直运行,直到用户中断。 代码结构: import pyautogui import time while True: pyautogui.click() # 在当前位置左键单击 time.sleep(180) # 等待3分钟(180秒) 但是,这样会一直运行下去,直到用户按Ctrl+C终止。 如果我们想增加一些灵活性,比如允许用户指定点击次数,我们可以修改为: import pyautogui import time # 设置点击次数,如果为0则无限循环 max_clicks = 0 # 0表示无限 count = 0 while max_clicks == 0 or count < max_clicks: pyautogui.click() count += 1 if max_clicks == 0 or count < max_clicks: time.sleep(180) 不过,用户要求是每三分钟一次,没有提到次数,所以我们可以先按照无限循环来。 但是,我们也要考虑用户可能希望有停止的方式,比如按某个键停止。不过,我们可以在脚本中捕获KeyboardInterrupt异常,这样当用户按Ctrl+C时,脚本可以优雅退出。 因此,我们可以这样: try: while True: pyautogui.click() time.sleep(180) except KeyboardInterrupt: print("脚本已停止") 这样,当用户按下Ctrl+C时,脚本会停止。 另外,我们还可以考虑在每次点击前打印一条消息,这样用户知道脚本在运行。 完整代码: import pyautogui import time print("开始模拟鼠标点击,每3分钟一次。按Ctrl+C停止。") try: while True: # 获取当前鼠标位置,并打印 x, y = pyautogui.position() print(f"在位置({x}, {y})模拟点击") pyautogui.click() time.sleep(180) except KeyboardInterrupt: print("\n脚本已停止") 注意:如果用户希望点击特定的位置,可以在click中传入坐标,例如:pyautogui.click(100, 100) 但是,由于用户没有指定位置,所以我们使用当前位置。另外,我们获取了当前位置并打印,这样用户可以看到点击的位置。 然而,在点击之前获取位置,可能会在获取位置后用户移动了鼠标,导致点击的位置不是获取时的位置。但是,由于我们立即点击,所以这种情况很少发生。如果要求绝对固定位置,应该指定坐标。 因此,我们可以提供两种方式:一种是固定坐标(需要用户输入),另一种是当前位置(默认)。但问题中没有要求,我们先按当前位置实现。 另外,我们也可以考虑使用命令行参数来指定坐标,但问题中没有要求,我们先不实现。 现在,我们按照上述思路编代码。 但是,我们还需要注意:如果用户在这三分钟内移动了鼠标,那么下一次点击的位置就是新的位置。所以,如果用户希望固定位置,应该指定坐标。 我们可以改进:让用户可以选择是否固定位置。但问题中未提及,我们先按当前位置实现。 最后,我们给出代码。</think>下面是一个Python脚本示例,用于每三分钟模拟一次鼠标点击。这个脚本使用`pyautogui`库控制鼠标,`time`库处理时间间隔: ```python import pyautogui import time import threading # 设置点击间隔(秒) CLICK_INTERVAL = 180 # 3分钟 = 180秒 def simulate_clicks(): """模拟鼠标点击的主函数""" try: while True: # 获取当前鼠标位置 x, y = pyautogui.position() print(f"在位置 ({x}, {y}) 模拟鼠标点击") # 执行鼠标点击(左键) pyautogui.click() # 等待指定时间 time.sleep(CLICK_INTERVAL) except KeyboardInterrupt: print("\n程序已停止") if __name__ == "__main__": print(f"开始每 {CLICK_INTERVAL//60} 分钟模拟鼠标点击") print("按 Ctrl+C 停止程序") # 启动点击线程 click_thread = threading.Thread(target=simulate_clicks) click_thread.daemon = True click_thread.start() # 保持主线程运行 try: while True: time.sleep(1) except KeyboardInterrupt: pass ``` ### 使用说明: 1. **安装依赖**: ```bash pip install pyautogui ``` 2. **自定义设置**: - 修改`CLICK_INTERVAL`值调整点击频率 - 使用`pyautogui.click(x, y)`指定固定点击坐标 - 添加`button='right'`参数模拟右键点击 3. **运行脚本**: - 启动后会自动在当前鼠标位置每3分钟左键点击一次 - 按`Ctrl+C`停止程序 ### 注意事项: 1. 脚本运行时不要移动鼠标(除非需要改变点击位置) 2. 确保屏幕解锁状态,否则可能无法触发点击 3. 首次运行时可能需要授予辅助功能权限 4. 使用线程设计确保程序可响应中断信号[^3] > 实际应用场景:自动化测试、周期性数据刷新、保持系统活跃状态等[^4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CV-deeplearning

请博主加个火腿

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值