Python程序实现手动选择图像roi区域
时间: 2023-06-13 15:06:46 浏览: 91
实现手动选择图像ROI区域,可以使用鼠标事件和OpenCV库实现。具体实现步骤如下:
1. 导入必要的库和读取图像
```python
import cv2
img = cv2.imread('image.jpg')
cv2.imshow('image', img)
```
2. 定义鼠标事件的回调函数
```python
def select_roi(event, x, y, flags, param):
global x_init, y_init, x_end, y_end, drawing
if event == cv2.EVENT_LBUTTONDOWN:
drawing = True
x_init, y_init = x, y
elif event == cv2.EVENT_MOUSEMOVE:
if drawing:
x_end, y_end = x, y
cv2.rectangle(img, (x_init, y_init), (x_end, y_end), (0, 255, 0), 2)
cv2.imshow('image', img)
elif event == cv2.EVENT_LBUTTONUP:
drawing = False
x_end, y_end = x, y
cv2.rectangle(img, (x_init, y_init), (x_end, y_end), (0, 255, 0), 2)
cv2.imshow('image', img)
```
3. 绑定鼠标事件到窗口
```python
drawing = False
cv2.namedWindow('image')
cv2.setMouseCallback('image', select_roi)
```
4. 循环显示图像,等待选择ROI
```python
while True:
cv2.imshow('image', img)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cv2.destroyAllWindows()
```
完整代码如下:
```python
import cv2
img = cv2.imread('image.jpg')
cv2.imshow('image', img)
def select_roi(event, x, y, flags, param):
global x_init, y_init, x_end, y_end, drawing
if event == cv2.EVENT_LBUTTONDOWN:
drawing = True
x_init, y_init = x, y
elif event == cv2.EVENT_MOUSEMOVE:
if drawing:
x_end, y_end = x, y
cv2.rectangle(img, (x_init, y_init), (x_end, y_end), (0, 255, 0), 2)
cv2.imshow('image', img)
elif event == cv2.EVENT_LBUTTONUP:
drawing = False
x_end, y_end = x, y
cv2.rectangle(img, (x_init, y_init), (x_end, y_end), (0, 255, 0), 2)
cv2.imshow('image', img)
drawing = False
cv2.namedWindow('image')
cv2.setMouseCallback('image', select_roi)
while True:
cv2.imshow('image', img)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cv2.destroyAllWindows()
```
在运行程序时,通过鼠标左键拖拽选择ROI区域,最后按下键盘上的 'q' 键退出程序。
相关推荐
![py](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://img-home.csdnimg.cn/images/20210720083646.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)