You need to enable JavaScript to run this app. 如何在JupyterLab中使用OpenCV实现图像显示、矩形绘制及垂直移动
优惠活动
大模型
产品
解决方案
定价
更多

如何在JupyterLab中使用OpenCV实现图像显示、矩形绘制及垂直移动

OpenCV窗口图像显示与可垂直移动矩形实现(适配JupyterLab)

环境初始化与依赖导入

首先导入OpenCV核心库,完成基础参数配置:

import cv2
import numpy as np
  • 本地图像读取校验:读入待显示的测试图像,增加非空判断避免路径错误导致的程序崩溃
# 替换为你本地存储的图像路径
img = cv2.imread("test.jpg")
if img is None:
    raise ValueError("图像读取失败,请核对文件路径与文件名")
  • 移动矩形参数初始化:定义矩形的位置、尺寸、移动速度等基础属性
# 矩形左上角初始坐标
rect_x, rect_y = 200, 100
# 矩形宽度、高度
rect_w, rect_h = 120, 80
# 垂直方向移动步长
move_step = 5
# 矩形颜色(OpenCV默认采用BGR格式,此处为纯绿色)
rect_color = (0, 255, 0)
# 矩形边线宽度
line_thickness = 2
# 获取图像尺寸,用于后续的移动边界判断
img_h, img_w = img.shape[:2]

核心功能实现逻辑

三个需求全部通过实时刷新的循环逻辑实现,保证窗口交互流畅:

  1. 图像窗口创建与实时显示
    调用OpenCV创建支持自适应调整大小的窗口,避免JupyterLab环境下窗口卡死、画面不刷新的问题
  2. 动态矩形绘制
    每次循环先拷贝原始图像作为临时绘制画布,避免矩形反复绘制产生的残留痕迹
  3. 垂直方向移动交互
    捕获键盘按键输入,根据按键指令调整矩形的纵向坐标,同时增加边界判断逻辑,防止矩形移出图像显示范围

完整可运行代码片段:

# 创建可自由调整大小的交互窗口
cv2.namedWindow("OpenCV Demo", cv2.WINDOW_NORMAL)
while True:
    # 基于原始图像生成当前帧的绘制画布
    canvas = img.copy()
    # 在画布上绘制矩形
    cv2.rectangle(
        img=canvas,
        pt1=(rect_x, rect_y),
        pt2=(rect_x + rect_w, rect_y + rect_h),
        color=rect_color,
        thickness=line_thickness
    )
    # 将当前帧显示到窗口中
    cv2.imshow("OpenCV Demo", canvas)
    # 捕获键盘输入,设置1ms延时保证窗口响应流畅
    key = cv2.waitKey(1) & 0xFF
    # 按q键或Esc键退出程序
    if key == ord('q') or key == 27:
        break
    # 按下方向键:矩形沿图像y轴正方向(向下)移动
    if key == ord('s'):
        new_y = rect_y + move_step
        # 边界校验:矩形底部不超出图像下边界
        if new_y + rect_h <= img_h:
            rect_y = new_y
    # 按上方向键:矩形沿图像y轴负方向(向上)移动
    if key == ord('w'):
        new_y = rect_y - move_step
        # 边界校验:矩形顶部不超出图像上边界
        if new_y >= 0:
            rect_y = new_y
# 退出循环后销毁所有OpenCV弹出窗口,避免JupyterLab内核阻塞
cv2.destroyAllWindows()

新手操作提示

  • OpenCV的图像坐标系原点位于画面左上角,y轴向下为正方向,调整移动坐标时需要匹配这个坐标系规则
  • 禁止直接在原始读入的图像上反复绘制图形,必须使用img.copy()生成临时画布,否则多次循环后矩形痕迹会永久叠加在原图上
  • 在JupyterLab中运行该交互程序时,必须按程序定义的退出键关闭窗口,直接点窗口的关闭按钮会导致内核持续占用,需要手动重启内核才能继续操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.09 00:36:04