两张灰度图用背景减法获取差分图像后用代码实现框选
时间: 2023-12-24 17:03:36 浏览: 48
假设你已经使用背景减法获取了两张灰度图像的差分图像,下面是用 Python 代码实现对差分图像进行框选的示例:
```python
import cv2
# 读取差分图像
diff_img = cv2.imread('diff_img.png', cv2.IMREAD_GRAYSCALE)
# 定义鼠标事件回调函数
def mouse_callback(event, x, y, flags, param):
global roi_start, roi_end, roi_selected
if event == cv2.EVENT_LBUTTONDOWN:
# 按下鼠标左键,开始框选
roi_start = (x, y)
roi_selected = False
elif event == cv2.EVENT_LBUTTONUP:
# 释放鼠标左键,完成框选
roi_end = (x, y)
roi_selected = True
elif event == cv2.EVENT_MOUSEMOVE:
# 鼠标移动,更新框选区域
if not roi_selected:
roi_end = (x, y)
# 显示差分图像并设置鼠标事件回调函数
cv2.namedWindow('diff_img')
cv2.setMouseCallback('diff_img', mouse_callback)
# 进入循环,等待用户框选
roi_start = None
roi_end = None
roi_selected = False
while True:
# 显示差分图像和当前选择的框选区域
display_img = cv2.cvtColor(diff_img, cv2.COLOR_GRAY2BGR)
if roi_start is not None and roi_end is not None:
cv2.rectangle(display_img, roi_start, roi_end, (0, 0, 255), 2)
cv2.imshow('diff_img', display_img)
# 按下 ESC 键退出循环
if cv2.waitKey(10) == 27:
break
cv2.destroyAllWindows()
```
在上面的代码中,我们使用了 OpenCV 库来读取差分图像,并定义了一个鼠标事件回调函数 `mouse_callback`。在回调函数中,按下鼠标左键开始框选,释放鼠标左键完成框选,鼠标移动时更新框选区域。在主循环中,我们不断显示差分图像和当前选择的框选区域,直到用户按下 ESC 键退出循环。
需要注意的是,在上面的示例中我们只演示了如何框选一个矩形区域,如果你需要框选其他形状的区域,需要对鼠标事件回调函数进行相应的修改。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)