用opencv实现保留原图且可以用鼠标对感兴趣的区域进行框选
时间: 2024-11-04 17:11:15 浏览: 13
Python+OpenCV感兴趣区域ROI提取方法
在OpenCV中,要实现在图像上使用鼠标绘制并保留原始图片的同时进行区域框选,你可以使用`cv2.imshow()`函数显示图像,并配合`cv2.setMouseCallback()`函数监听鼠标的事件。下面是一个简单的步骤说明:
1. 首先,导入所需的库:
```python
import cv2
import numpy as np
```
2. 定义一个回调函数,当鼠标按下、移动或释放时会被调用:
```python
def draw_rectangle(event, x, y, flags, param):
if event == cv2.EVENT_LBUTTONDOWN:
# 当左键按下,开始绘制矩形
start_x, start_y = x, y
elif event == cv2.EVENT_LBUTTONUP:
# 当左键释放,结束绘制矩形
end_x, end_y = x, y
# 计算矩形的边界,然后在原图上画出矩形
rectangle = (start_x, start_y, end_x - start_x, end_y - start_y)
cv2.rectangle(img, (start_x, start_y), (end_x, end_y), (0, 255, 0), 2) # 绿色矩形
cv2.imshow("Image", img)
```
3. 加载图像并设置鼠标回调:
```python
img = cv2.imread('your_image_path.jpg')
cv2.namedWindow("Image")
cv2.setMouseCallback("Image", draw_rectangle)
```
4. 显示图像并等待用户交互:
```python
while True:
cv2.imshow("Image", img)
key = cv2.waitKey(1) & 0xFF
if key == ord('q') or key == 27: # 'q' 或者 Esc 键退出程序
break
cv2.destroyAllWindows()
```
在这个过程中,当你在图像上点击并拖动鼠标时,会在该区域内创建一个绿色的矩形框。原图会一直保持不变。
阅读全文