Python OpenCV 实现鼠标画框交互教程

6 下载量 120 浏览量 更新于2024-08-29 收藏 88KB PDF 举报
本篇资源是关于使用Python与OpenCV库实现鼠标画框功能的教程。作者Panjq在IntelligentManufacture项目中编写了一个名为`user_interaction.py`的脚本,用于演示如何通过鼠标操作在图像上绘制矩形框。以下详细介绍了核心代码段和实现过程。 首先,我们导入必要的库,如OpenCV(cv2),以及自定义的`image_processing`模块和NumPy,这些库将在交互过程中提供图像处理和数学计算支持。`cv2`主要负责图像显示和事件处理,`image_processing`可能包含了一些图像预处理或后处理的函数,而`numpy`则是数据处理的基础工具。 代码的核心部分在`on_mouse`函数中,该函数被OpenCV注册为窗口回调函数,当用户在图像窗口进行鼠标操作时,会触发这个函数。以下是函数中的关键步骤: 1. **左键点击(EVENT_LBUTTONDOWN)**:当用户按下左键时,程序会在原图上绘制一个绿色的圆点(`cv2.circle()`),并在显示的`image`窗口中实时更新。这个点的位置由`(x, y)`坐标表示。 2. **左键拖曳(EVENT_MOUSEMOVE & EVENT_FLAG_LBUTTON)**:如果用户保持左键并移动鼠标,程序会在两个圆点之间绘制一个红色边框(`cv2.rectangle()`)。这意味着用户正在定义矩形的两个顶点。 3. **左键释放(EVENT_LBUTTONUP)**:当用户松开左键,程序将最终的矩形绘制出来,用蓝色边框表示。同时,还会检查`point1`和`point2`是否不同,以确定用户是否确实绘制了矩形(即两个点不重合)。 4. **矩形区域提取**:在完成绘制后,程序可能会根据`min_x`, `min_y`, `width` 和 `height` 计算出实际的矩形区域,这可能用于后续的图像分析或处理,但具体实现未在给出的代码中体现。 这个Python + OpenCV的例子展示了如何通过鼠标交互来动态地在图像上创建和显示矩形框,这对于图像分析、目标检测或用户界面设计等场景非常有用。在实际应用中,可以根据需要调整代码,例如添加矩形区域的存储和后续操作,或者支持其他类型的鼠标事件。