You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenCV中如何通过按键控制图片序列播放的暂停与继续

实现方案

核心逻辑是新增一个播放状态标记,同时捕获cv2.waitKey()的返回值判断用户按键,动态切换播放/暂停状态。

完整修改后代码

import os
import cv2

# 替换为你自己的图片文件夹路径
directory = "你的图片目录路径"
the_list = os.listdir(directory)
img_list = [i for i in the_list if i.endswith('.png')]
img_list.sort()

is_pause = False # 播放状态标记,默认不暂停

for img_name in img_list:
    # 拼接完整路径,避免非当前工作目录下读不到图片的问题
    img = cv2.imread(os.path.join(directory, img_name))
    cv2.imshow("movie", img)
    
    while True:
        if not is_pause:
            # 播放状态下等待10ms自动切换下一帧
            key = cv2.waitKey(10)
            # &0xFF是为了兼容不同系统返回的32位按键值,取低8位即可
            if (key & 0xFF) == ord(' '): 
                is_pause = not is_pause
            elif (key & 0xFF) == 27: # 按ESC直接退出播放
                cv2.destroyAllWindows()
                exit()
            # 无暂停操作则退出内层循环,加载下一张图片
            break 
        else:
            # 暂停状态下阻塞等待按键输入
            key = cv2.waitKey(0)
            if (key & 0xFF) == ord(' '): 
                is_pause = not is_pause
            elif (key & 0xFF) == 27:
                cv2.destroyAllWindows()
                exit()

逻辑说明

  • 用is_pause布尔变量记录当前播放状态,支持通过空格自由切换暂停/播放
  • 默认按ESC键可以直接终止整个播放流程,你也可以自行修改ord()里的字符换成其他自定义快捷键
  • 补全了路径拼接逻辑,解决原代码在非当前工作目录执行时读不到图片的常见问题

内容的提问来源于stack exchange,提问作者KansaiRobot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 18:57:05