计算机视觉 OpenCV【四:绘制与文本】

本文详细介绍了如何使用Mat类在OpenCV中绘制画布、圆、矩形、线以及文本,包括颜色设置、形状绘制技巧和文本呈现。从创建蓝色画布开始,逐步探讨圆的绘制方法、增加厚度与填充,再到矩形、线和文本的实现,适合初学者入门。
摘要由CSDN通过智能技术生成

目录

一、绘制画布以及定义画布颜色

绘制方法

代码

效果

二、绘制圆

绘制方法

效果

增加厚度

填充

三、绘制矩形

绘制方法

 效果

四、绘制线

绘制方法

效果

五、写文本

写文本方法

效果


一、绘制画布以及定义画布颜色

绘制方法

对于一个Mat类的对象,我们有其构造函数:

创建行数为 rows,列数为 col,类型为 type 的图像,并将所有元素初始
化为值 s

Mat::Mat(int rows, int cols, int type, const Scalar& s)

比如,我们要创建一张大小为512×512的蓝色画布:

Mat img(512, 512,CV_8UC3,Scalar(255,0,0));

构造函数:
前两个参数为行与列
第三个参数为类型,
这里CV_8UC3指的是我们拥有2的8次方种值,表示某个通道的亮度;
UC3指的是我们需要用到3个通道:蓝、绿、红
第四个参数为元素初始值
默认顺序为BGR
所以如果我们需要用纯蓝色画布,可以写成255,0,0

代码

int main()
{
	//空白图像
	//构造函数
	//前两个参数为行与列
	//第三个参数为类型,
	//这里CV_8UC3指的是我们拥有2的8次方种值,表示某个通道的亮度;
	//UC3指的是我们需要用到3个通道:蓝、绿、红
	//第四个参数为元素初始值
	//默认顺序为BGR
	//所以如果我们需要用纯蓝色画布,可以写成255,0,0
	Mat img(512, 512,CV_8UC3,Scalar(255,0,0));
	imshow("Image", img);
	waitKey(0);
	return 0;
}

效果

纯白,我们需要把所有通道的亮度调成最高——255;

纯黑,则都为0即可。

 

二、绘制圆

绘制方法

绘制圆需要用到circle函数:

circle(img, Point(256, 256), 155, Scalar(0, 69, 255));

第一个参数为画布,
第二个参数为圆心坐标,
第三个参数为半径,
第四个参数为线条颜色,这里(0,69,255)为橙色。

效果

增加厚度

只需要在circle函数的最后一个参数填上厚度即可

circle(img, Point(256, 256), 155, Scalar(0, 69, 255),10);

填充

只需要将厚度的参数改为FILLED即可。

circle(img, Point(256, 256), 155, Scalar(0, 69, 255),FILLED);

三、绘制矩形

绘制方法

 绘制矩形的函数为rectangle

rectangle(img, Point(130, 226), Point(382, 286), Scalar(255, 255, 255), 3);

第一个参数为画布;

第二个参数为矩形左上角坐标;

第三个参数为矩形右下角坐标;

第四个参数为颜色;

第五个参数为厚度。

 效果

四、绘制线

绘制方法

绘制线需要用到line函数:

line(img, Point(130, 296), Point(382, 296),Scalar(255,255,255),2);

第一个参数为画布;

第二个参数为线条起点坐标;

第三个参数为线条终点坐标;

第四个参数为颜色;

第五个参数为厚度。 

效果

效果如下(把矩形改为了白色全填充): 

五、写文本

写文本方法

写文本我们需要用到putText函数:

putText(img, "Kukeoo's CS career", Point(137, 262), FONT_HERSHEY_DUPLEX, 0.75, Scalar(0, 69, 255), 2);

第一个参数为画布;

第二个参数为文本;

第三个参数为起始坐标;

第四个参数为字体:这里我选的随机;

第五个参数为缩放倍数;

第六个参数为颜色;

第七个参数为厚度。

效果

我觉得蛮好看的哈哈。

绘制与文本的笔记到这里就结束了,下一章我将更新透视变换。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值