OpenCV rectangle():画矩形(附带实例)
全局函数 rectangle() 通过对角线上的两个顶点绘制矩形,该函数声明如下:
下面来看一个例子,绘制一个医院的红十字:
1) 打开 Qt Creator,新建一个控制台工程,工程名是 test。
2) 在 IDE 中打开 main.cpp,输入如下代码:
3) 保存工程并运行,结果如下图所示:
void cv::rectangle(InputOutputArray img, Point pt1, Point pt2, const Scalar& color, int thickness = 1, int lineType = LINE_8, int shift = 0 ); void cv::rectangle(InputOutputArray img, Rect rec, const Scalar & color, int thickness=1, int lineType = LINE_8, int shift = 0)
- img 表示矩形所在的图像;
- pt1 表示矩形的一个顶点;
- pt2 表示矩形对角线上的另一个顶点;
- Color 表示线条颜色(RGB)或亮度(灰度图像);
- Thickness 表示组成矩形的线条的粗细程度,取负值时(如 CV_FILLED)函数绘制填充了色彩的矩形;
- line_type 表示线条的类型;
- Shift 表示坐标点的小数位数。
下面来看一个例子,绘制一个医院的红十字:
1) 打开 Qt Creator,新建一个控制台工程,工程名是 test。
2) 在 IDE 中打开 main.cpp,输入如下代码:
#include <iostream> #include <opencv2/imgproc/types_c.h> // for CV_RGB2GRAY #include <opencv2/core.hpp> #include <opencv2/highgui.hpp> #include <opencv2/imgproc.hpp> using namespace std; using namespace cv; int main() { Mat image3 = Mat::zeros(120, 120, CV_8UC3); // 生成全零矩阵 Rect rec1 = Rect(10, 30, 60, 20); // 定义矩形对象,左上角坐标是(10,30),宽度是60,高度是20 Rect rec2 = Rect(30, 10, 20, 60); // 定义矩形对象,左上角坐标是(30,10),宽度是20,高度是60 rectangle(image3, rec1, Scalar(0, 0, 255), -1, 8, 0); // 在 image3 上画横矩形 rectangle(image3, rec2, Scalar(0, 0, 255), -1, 8, 0); // 在 image3 上画竖矩形 rectangle(image3, Point(10, 30), Point(70, 50), Scalar(0, 255, 255), 2, 8, 0); // 黄色矩形镶边 rectangle(image3, Point(30, 10), Point(50, 70), Scalar(0, 255, 255), 2, 8, 0); // 黄色矩形镶边 rectangle(image3, Point(30, 30), Point(50, 50), Scalar(0, 0, 255), 3, 8); // 红色正方形覆盖(中央) imshow("Red cross", image3); waitKey(); return 0; }在上述代码中,首先创建了一个 Mat 矩阵对象 image3,并且是全黑的。然后定义了两个矩形对象 rec1 和 rec2,分别表示红十字的横矩形和竖矩形,接着调用画矩形的函数 rectangle() 进行绘制,这两个矩形使用颜色填充,因为倒数第三个参数是 -1。最后又画了两个矩形(这次没有填充,是画的矩形边),黄色镶边。
3) 保存工程并运行,结果如下图所示:
