rectangle()
是 OpenCV 中用于在图像上绘制矩形的基本函数。它既可以通过定义两个顶点(左上角和右下角)绘制,还可以根据Rect进行绘制。下面是它的原型。
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, // Rect对象定义矩形
const Scalar& color, // 矩形颜色
int thickness = 1, // 线宽(或填充)
int lineType = LINE_8, // 线型
int shift = 0 // 坐标点小数位数
);
下面通过实际案例演示其用法。
#include<opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main()
{
Mat girl = imread("images/girl.jpg", IMREAD_COLOR);//3通道(CV_8UC3)
if (girl.empty()) {
return 0;
}
imshow("girl", girl);//显示图像
Scalar color(0, 0, 255);// 线条颜色
int thickness = 1;// 线宽
int lineType = LINE_8;// 线型
// 使用两个点画红色矩形边框
rectangle(girl,
Point(390, 90), //左上角
Point(490, 320), //右下角
Scalar(0, 0, 255), // BGR格式的红色
1); // 线宽1像素
// 使用Rect画绿色填充矩形
cv::rectangle(girl,
cv::Rect(90, 90, 100, 230),
cv::Scalar(0, 255, 0),
cv::FILLED); // 填充绿色
imshow("girl2", girl);
imwrite("girl2.jpg", girl);
waitKey(0);//等待按键
return 0;
}
在上述代码中,首先加载一个3通道8位图,如下所示。

然后用了两种方式在原图中画矩形,另外,填充的方式也用了两种。最终效果如下所示。

rectangle()函数在图像识别时用于标出结果非常方便,经常使用。常用于绘制目标检测框。如果采用两个Point点来绘制矩形,这两个点的顺序可以是左上到右下或右下到左上,无特定要求。当thickness = -1
或 cv::FILLED
表示填充矩形。LINE_AA在斜边上效果更好但性能稍差。
若文章对您有帮助,可以激励一下我哦,祝您平安幸福!
微信 | 支付宝 |
---|---|
![]() |
![]() |