opencv选择矩形框
时间: 2025-04-23 19:03:54 浏览: 15
### 使用 OpenCV 选择矩形区域
在 Python 中使用 OpenCV 来选择矩形区域通常涉及两个主要操作:一是通过鼠标事件绘制矩形,二是根据定义的坐标截取该矩形内的图像部分。
#### 绘制矩形并获取其位置信息
为了实现在图像上动态地画出一个矩形框,并记录下这个矩形的位置参数(左上角点坐标以及宽度高度),可以设置回调函数监听鼠标的点击拖拽动作。下面是一段简单的代码示例用于展示这一过程:
```python
import cv2
drawing = False # 当鼠标按下时变为 True
ix, iy = -1, -1 # 初始化起始坐标
def draw_rectangle(event, x, y, flags, param):
global ix, iy, drawing
if event == cv2.EVENT_LBUTTONDOWN:
drawing = True
ix, iy = x, y
elif event == cv2.EVENT_MOUSEMOVE:
if drawing == True:
img_copy = img.copy()
cv2.rectangle(img_copy, (ix,iy), (x,y), (0,255,0), 2)
cv2.imshow('image',img_copy)
elif event == cv2.EVENT_LBUTTONUP:
drawing = False
cv2.rectangle(img,(ix,iy),(x,y),(0,255,0),2)
rect_coords = [(min(ix,x), min(iy,y)), (max(ix,x), max(iy,y))]
print(f"Selected rectangle coordinates: {rect_coords}")
# 加载图片
img = cv2.imread('example.jpg')
cv2.namedWindow('image')
cv2.setMouseCallback('image',draw_rectangle)
while(1):
cv2.imshow('image',img)
k = cv2.waitKey(1) & 0xFF
if k == ord('m'):
break
cv2.destroyAllWindows()
```
这段程序允许用户按住鼠标左键并在窗口内移动以划定想要选取的矩形边界;松开按钮后会打印所选矩形的具体坐标[^1]。
#### 根据给定坐标截取矩形区域
一旦获得了所需的矩形坐标,就可以按照如下方式轻松提取对应的子图:
```python
# 假设已知矩形顶点坐标为(x_min, y_min),右下角坐标为(x_max, y_max)
cropped_img = img[y_min:y_max, x_min:x_max]
# 展示裁剪后的图像
cv2.imshow("Cropped Image", cropped_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这里 `img` 是原图矩阵对象,而 `cropped_img` 则保存了被裁减下来的矩形区间的像素数据副本[^2]。
阅读全文
相关推荐
















