写一段代码,可以用鼠标在一张图片画矩形框,并且可以修改矩形框的粗细,颜色,Python语言
时间: 2023-12-27 13:03:14 浏览: 142
python实现在图片上画特定大小角度矩形框
5星 · 资源好评率100%
好的,以下是一段基于 Python 和 OpenCV 库的代码,可以在一张图片中用鼠标画矩形框,并且可以修改矩形框的粗细和颜色:
``` python
import cv2
# 定义全局变量
is_drawing = False
start_point = (-1, -1)
end_point = (-1, -1)
color = (0, 255, 0)
thickness = 2
# 鼠标事件回调函数
def mouse_callback(event, x, y, flags, param):
global is_drawing, start_point, end_point, color, thickness
# 鼠标左键按下,开始画矩形框
if event == cv2.EVENT_LBUTTONDOWN:
is_drawing = True
start_point = (x, y)
# 鼠标左键释放,结束画矩形框
elif event == cv2.EVENT_LBUTTONUP:
is_drawing = False
end_point = (x, y)
# 鼠标移动,更新矩形框大小
elif event == cv2.EVENT_MOUSEMOVE:
if is_drawing:
end_point = (x, y)
# 读取图片
img = cv2.imread('test.jpg')
# 创建窗口并绑定鼠标事件回调函数
cv2.namedWindow('image')
cv2.setMouseCallback('image', mouse_callback)
# 程序主循环
while True:
# 绘制矩形框
img_copy = img.copy()
if start_point != (-1, -1) and end_point != (-1, -1):
cv2.rectangle(img_copy, start_point, end_point, color, thickness)
# 显示图片
cv2.imshow('image', img_copy)
# 处理按键事件
key = cv2.waitKey(1)
if key == ord('q'): # 退出程序
break
elif key == ord('c'): # 清除矩形框
start_point = (-1, -1)
end_point = (-1, -1)
elif key == ord('s'): # 保存图片
cv2.imwrite('result.jpg', img_copy)
elif key == ord('1'): # 设置矩形框颜色为绿色
color = (0, 255, 0)
elif key == ord('2'): # 设置矩形框颜色为蓝色
color = (255, 0, 0)
elif key == ord('3'): # 设置矩形框颜色为红色
color = (0, 0, 255)
elif key == ord('4'): # 设置矩形框粗细为1
thickness = 1
elif key == ord('5'): # 设置矩形框粗细为2
thickness = 2
elif key == ord('6'): # 设置矩形框粗细为3
thickness = 3
# 释放窗口和资源
cv2.destroyAllWindows()
```
这段代码实现了在一张图片中用鼠标画矩形框,并且可以修改矩形框的粗细和颜色。在鼠标事件回调函数中,当鼠标左键按下时,开始画矩形框;当鼠标左键释放时,结束画矩形框;当鼠标移动时,更新矩形框大小。程序主循环中,通过监听按键事件来修改矩形框的属性,以及保存图片或退出程序。
阅读全文