绘制矩形框 OpenCV

Rectangle 画矩形

C++: Mat类

void rectangle(Mat& img,Point pt1, Point pt2, const Scalar&color, 

int thickness=1,int lineType=8, int shift=0)

void rectangle(Mat& img,cvPoint(x, y), cvPoint(x + w, y + h), Scalar(255, 0, 0),

int thickness=1, int lineType=8,int shift=0)

参数:

·img – 画矩形的对象

·pt1 – 矩形的一个顶点,左上角的.

·pt2 – 另一个顶点,右下角的.

·rec – 确定矩形的另一种方式,给左上角坐标和长宽

·color – 指定矩形的颜色或亮度(灰度图像),scalar(255,0,255)既可指定.

·thickness – 矩形边框的粗细. 负值(like CV_FILLED)表示要画一个填充的矩形

·lineType – 边框线型. (   

8 (or 0) - 8-connected line(8邻接)连接 线。

4 - 4-connected line(4邻接)连接线。

CV_AA - antialiased 线条。)

·shift –坐标点的小数点位数

例1:

short * p = ((short*)(pResults + 1)) + 6 * i;//表示检测到的人脸区域

int x = p[0]; //检测到的人脸区域的左上角坐标及宽高
int y = p[1];
int w = p[2];
int h = p[3];

rectangle(gray, Point(x, y), Point(x + w, y + h), Scalar(0, 0, 255), 2, 8);//利用左上角坐标及宽高

例2:

int x = cvRound(shape[0].x);

int y = cvRound(shape[17].y-10);

int w = cvRound(shape[14].x-shape[0].x);

int h = cvRound(shape[7].y - shape[17].y);

//画出红色矩形框

rectangle(pic_RGB, Point(x,y),Point(x+w,y+h), Scalar(0, 0, 255), 3, 8, 0);

### 如何在 OpenCV 中使用 Python 绘制矩形边框 在 OpenCV-Python 中,`cv2.rectangle()` 函数被广泛应用于绘制矩形边框。此函数允许用户通过指定顶点坐标、颜色和其他参数,在图像上绘制矩形区域。 以下是 `cv2.rectangle()` 的基本语法及其参数说明: ```python cv2.rectangle(img, pt1, pt2, color, thickness=None, lineType=None, shift=None) ``` - **img**: 输入图像,即要绘制矩形的目标图像。 - **pt1**: 矩形左上角的顶点坐标 `(x1, y1)`。 - **pt2**: 矩形右下角的顶点坐标 `(x2, y2)`。 - **color**: 矩形的颜色,通常以 BGR 格式表示,例如 `(255, 0, 0)` 表示蓝色[^2]。 - **thickness**: 边框线条宽度;如果设置为负数,则填充整个矩形区域。 - **lineType**: 线条类型,默认值为 `cv2.LINE_8`(8 连接线)。其他选项包括 `cv2.LINE_4` 和 `cv2.LINE_AA`。 #### 示例代码:绘制矩形边框 下面展示了一个完整的代码示例,演示如何在一个空白画布上绘制矩形边框: ```python import cv2 import numpy as np # 创建一个大小为 500x500 像素的黑色画布 canvas = np.zeros((500, 500, 3), dtype="uint8") # 定义矩形的位置和属性 top_left_corner = (100, 100) # 左上角坐标 bottom_right_corner = (400, 400) # 右下角坐标 rectangle_color = (0, 255, 0) # 绿色 (BGR 格式) border_thickness = 2 # 边框厚度 # 使用 cv2.rectangle() 方法绘制矩形 cv2.rectangle(canvas, top_left_corner, bottom_right_corner, rectangle_color, border_thickness) # 显示结果图像 cv2.imshow("Rectangle Drawing", canvas) cv2.waitKey(0) cv2.destroyAllWindows() ``` 以上代码会生成一张带有绿色矩形边框的黑底图片,并将其显示出来[^2]。 #### 关于交互式绘图 除了静态绘图外,还可以利用鼠标事件实现实时交互式的矩形绘制功能。这可以通过绑定自定义回调函数到窗口上的鼠标动作来完成。具体实现方式可参考以下简化版逻辑结构: ```python class RectangleDrawer: def __init__(self): self.drawing = False self.start_point = None self.end_point = None def draw_rectangle(self, event, x, y, flags, param): if event == cv2.EVENT_LBUTTONDOWN: self.start_point = (x, y) self.drawing = True elif event == cv2.EVENT_MOUSEMOVE: if self.drawing: img_copy = param['image'].copy() cv2.rectangle(img_copy, self.start_point, (x, y), (255, 0, 0), 2) cv2.imshow(param["winname"], img_copy) elif event == cv2.EVENT_LBUTTONUP: self.drawing = False self.end_point = (x, y) cv2.rectangle(param['image'], self.start_point, self.end_point, (255, 0, 0), 2) cv2.imshow(param["winname"], param['image']) drawer = RectangleDrawer() # 加载测试图像并启动窗口 test_image = np.zeros((500, 500, 3), dtype=np.uint8) window_name = "Interactive Rectangle Drawer" cv2.namedWindow(window_name) cv2.setMouseCallback(window_name, drawer.draw_rectangle, {"image": test_image, "winname": window_name}) while True: key = cv2.waitKey(1) & 0xFF if key == ord('q'): # 按 'q' 键退出循环 break cv2.destroyAllWindows() ``` 该脚本提供了一种基于鼠标的动态绘图体验,使用户能够自由拖动鼠标以调整矩形位置与尺寸[^3]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值