Python+OpenCV实现逐个绘制随机绿圆 每个显示10秒后消失
OpenCV顺序展示随机圆形实现方案
需求目标
- 基于Python与OpenCV实现10个随机小型绿色圆形的顺序展示
- 第一个圆形最先出现,保持显示10秒后消失
- 后续圆形依次遵循「绘制→显示10秒→消失」的规则执行,直到10个圆形全部展示完成
原代码存在的问题
- 循环阶段将10个圆形一次性全部绘制到同一张静态画布上,缺少逐次清空、逐次渲染的逻辑
- 所有绘制逻辑执行完毕后才调用窗口显示接口,无法实现圆形逐个出现的效果
- 调用
cv2.waitKey(0)为无限等待按键触发的逻辑,无法实现10秒自动切换到下一个圆形的效果
可直接运行的正确代码
import cv2 import numpy as np # 基础参数配置 CANVAS_HEIGHT = 300 CANVAS_WIDTH = 300 CIRCLE_RADIUS = 5 SINGLE_SHOW_MS = 10000 # 单个圆形显示时长,单位毫秒,10秒对应10000毫秒 for _ in range(10): # 每次绘制前重置纯黑画布,清除上一个圆形的内容 img = np.zeros((CANVAS_HEIGHT, CANVAS_WIDTH, 3), dtype="uint8") # 生成随机圆心坐标 circle_center = tuple(np.random.randint(0, high=CANVAS_HEIGHT, size=(2,))) # 绘制填充绿色圆形 cv2.circle(img, circle_center, CIRCLE_RADIUS, (0, 255, 0), -1) # 刷新显示当前画布内容 cv2.imshow("IMG", img) # 等待指定时长,期间如果按下q键可以提前退出程序 key_press = cv2.waitKey(SINGLE_SHOW_MS) if key_press == ord('q'): break # 程序结束前销毁所有OpenCV窗口 cv2.destroyAllWindows()
关键逻辑说明
- 每次循环开头重新生成全黑画布,保证上一个圆形的内容被完全覆盖,实现“消失”的视觉效果
cv2.waitKey()传入10000作为参数,代表窗口刷新后等待10秒再执行下一轮逻辑,满足单圆形显示10秒的要求- 增加按键检测逻辑,展示过程中按下键盘
q键可以提前终止程序,避免OpenCV窗口出现无响应的情况
内容的提问来源于stack exchange,提问作者Simon
相关产品推荐
相关产品推荐

