OpenCV(C++) 创建图片绘制图形 (矩形、圆、文字、线段等等)
一、OpenCV 介绍
OpenCV 是基于开源许可证的跨平台计算机视觉库,提供了一组丰富、广泛的图像处理和计算机视觉算法。OpenCV 支持多种编程语言,包括 C++、Python、Java 等,可以运行在 Linux、Windows、Mac OS 等平台上。
OpenCV 能够在图像上绘制各种几何形状、文本和曲线,以及对图像进行调整、裁剪和旋转等操作,这些功能都为图像的分析和处理提供了很大的帮助。
以下是 OpenCV 可以绘制图像的一些应用:
(1)图像标注:在图像上添加标注或者注释,例如在目标检测或者图像分类任务中,通过在图像上绘制框、标签等信息来标记检测到的目标。
(2)处理后显示:例如在图像处理过程中,可以在处理前和处理后的图像上绘制对比图,直观地显示图像处理的效果。
(3)实时显示:通过持续不断地在屏幕上绘画来实现实时显示效果,例如在视频处理中输出处理后的视频流并将其实时渲染在屏幕上。
![](https://static001.geekbang.org/infoq/ae/ae3854f4991d879010d57af00f628fb0.png)
二、绘制图形
【1】绘制图形弹窗显示
下面代码实现的功能:
使用 OpenCV(C++) 新建一张透明图片,在图片里绘制一个矩形、一条直线、一段文字、一个圆。
cv::Mat 是 OpenCV 中表示图像的数据结构,它可以存储多通道的图像。cv::Scalar 是一个四通道的实数向量,用于表示像素点的颜色和 alpha 值。cv::Point 是一个二维整型向量,用于表示像素点的坐标。cv::rectangle 函数用于在图片上绘制矩形。cv::line 函数用于在图片上绘制直线。cv::putText 函数用于在图片上绘制文本。cv::circle 函数用于在图片上绘制圆。
【2】绘制图形保存到本地
三、函数功能介绍
【1】绘制直线
cv::line
函数用于在图像上绘制一条直线,其参数如下:
img
: 输入输出参数,表示待绘制的目标图像。pt1
: 输入参数,表示的是直线的起点坐标,是一个cv::Point
类型的对象。pt2
: 输入参数,表示的是直线的终点坐标,也是一个cv::Point
类型的对象。color
: 输入参数,表示绘制直线的颜色以及透明度,是一个cv::Scalar
类型的对象。常见的颜色有:红色(0, 0, 255)、绿色(0, 255, 0)、蓝色(255, 0, 0)等。thickness
: 可选参数,表示绘制直线的宽度。默认值为1
表示绘制一个像素宽度的直线,如果设置为负值,则表示绘制一条填充直线。
img
: 输入输出参数,表示待绘制的目标图像。center
: 输入参数,表示圆心坐标,是一个cv::Point
类型的对象。radius
: 输入参数,表示圆的半径。color
: 输入参数,表示绘制圆的颜色以及透明度,是一个cv::Scalar
类型的对象。thickness
: 可选参数,表示圆线条的宽度。默认值为1
表示绘制一个像素宽度的圆,如果设置为负值,则表示绘制一条填充的圆。
img
: 输入输出参数,表示待绘制的目标图像。rect
: 输入参数,表示矩形,是一个cv::Rect
类型的对象,可以通过传递左上角和右下角坐标的方式来定义一个矩形。color
: 输入参数,表示绘制矩形的颜色以及透明度,是一个cv::Scalar
类型的对象。thickness
: 可选参数,表示矩形边框的宽度。默认值为1
表示绘制一个像素宽度的矩形,如果设置为负值,则表示绘制一条填充的矩形。
img
: 输入输出参数,表示待绘制的目标图像。text
: 输入参数,表示要绘制的文本字符串。org
: 输入参数,表示文本框左下角的坐标点,是一个cv::Point
类型的对象。
: 可选参数,表示文本边界的类型,可以取以下几个值:
cv::LINE_4
: 表示绘制四个相邻的点的文本边界,默认值。cv::LINE_8
: 表示绘制八个相邻的点的文本边界。cv::LINE_AA
: 表示绘制抗锯齿的文本边界。bottomLeftOrigin
: 可选参数,表示坐标点是否为文本框左下角的坐标点,默认值为false
,表示坐标点为文本框左上角的坐标点。
版权声明: 本文为 InfoQ 作者【DS小龙哥】的原创文章。
原文链接:【http://xie.infoq.cn/article/25ec2c6aa6b468dae7ea650aa】。文章转载请联系作者。
评论