怎么用opencv实现鼠标路径选取roi区域
时间: 2023-08-17 13:11:45 浏览: 149
OpenCV利用鼠标进行矩形ROI选取
5星 · 资源好评率100%
要使用OpenCV实现鼠标路径选取ROI区域,可以按照以下步骤进行:
1. 创建一个回调函数来处理鼠标事件。
```python
def select_ROI(event, x, y, flags, param):
global ix, iy, drawing, img, img_copy
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)
elif event == cv2.EVENT_LBUTTONUP:
drawing = False
cv2.rectangle(img_copy, (ix, iy), (x, y), (0, 255, 0), 2)
```
2. 读取图像并创建一个副本。
```python
img = cv2.imread('image.jpg')
img_copy = img.copy()
```
3. 注册回调函数并显示图像。
```python
cv2.namedWindow('image')
cv2.setMouseCallback('image', select_ROI)
while True:
cv2.imshow('image', img_copy)
k = cv2.waitKey(1) & 0xFF
if k == ord('s'):
# 保存选取的ROI区域
break
cv2.destroyAllWindows()
```
4. 在回调函数中处理鼠标事件,当按下左键时记录起点坐标,当鼠标移动时绘制矩形框,当释放左键时绘制最终的矩形框。
5. 在主循环中显示图像并等待用户按下's'键完成选取操作。
6. 最后,可以使用OpenCV的ROI操作将选取的区域提取出来并保存。
```python
roi = img[iy:y, ix:x]
cv2.imwrite('roi.jpg', roi)
```
阅读全文