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
相关产品推荐
相关产品推荐

