0
点赞
收藏
分享

微信扫一扫

Opencv基础画图函数——line、circle、rectangle、Rect、ellipse、polylines、putText函数的用法


目录

  • ​​1、line函数​​
  • ​​2、circle函数​​
  • ​​3、rectangle、Rect函数​​
  • ​​4、ellipse函数​​
  • ​​5、polylines函数​​
  • ​​6、随机初始化颜色​​
  • ​​7、putText函数​​
  • ​​总结​​

1、line函数

line(img,(0,0),(511,511),(255,0,0),5)

这个函数有5个参数,img是图像名称,起点坐标,终点坐标,(255,0,0)是蓝色,5是线的宽度
会画一条 从左上方到右下角的蓝色线段。

2、circle函数

cvCircle(CvArr* img, CvPoint center, int radius, CvScalar color, int thickness=1, int lineType=8, int shift=0)
img为源图像指针
center为画圆的圆心坐标
radius为圆的半径
color为设定圆的颜色,规则根据B(蓝)G(绿)R(红)
thickness 如果是正数,表示组成圆的线条的粗细程度。否则,表示圆是否被填充
line_type 线条的类型。默认是8
shift 圆心坐标点和半径值的小数点位数

for (int i = 0;i < points.size();i++)
{
circle(image, points[i], 5, Scalar(0, 0, 255), 2, 8, 0);
}

3、rectangle、Rect函数

rectangle函数是用来绘制一个矩形框的,通常用在图片的标记上。

rectangle(img2, Point(j,i), Point(j + img4.cols, i + img4.rows), Scalar(255, 255, 0), 2, 8);

img2:要做处理的图片
二三代表左上右下矩形的角坐标
scalar:颜色
2代表线条宽度
8是线型,默认取8

Rect函数也是画矩形的,但与上面的有所不同

Rect roi_rect = Rect(128, 128, roi.cols, roi.rows);

Rect(x,y,width,height),x, y 为左上角坐标, width, height 则为长和宽。

4、ellipse函数

void ellipse(InputOutputArray img, Point center, Size axes, double angle, double startAngle, double endAngle,
const Scalar& color, int thickness = 1, int lineType = LINE_8, int shift = 0);

ellipse(img,(256,256),(100,50),0,0,180,255,-1)

这个函数有8个参数:图像名称,中心点坐标,长轴长度,短轴长度,旋转角度,图像出现的部分(长轴顺时针方向起始的角度和结束角度)0,180是下半个椭圆,颜色数组这里255是蓝色,线宽
椭圆要素:1.是中心点的位置坐标 2.长轴和短轴的长度 3.椭圆沿逆时针方向旋转的角度 4.长轴顺时针方向起始的角度和结束角度

5、polylines函数

画多边形
polylines(src, [points], True,color, thickness), points为点集,需要知道多边形顶点的集合

6、随机初始化颜色

经常遇到画出各种颜色的图形,这里我们用随机类RNG
用法如下:

RNG g_rng(12345);
Scalar color = Scalar(g_rng.uniform(0, 255),g_rng.uniform(0, 255), g_rng.uniform(0, 255));//任意值

7、putText函数

写字符串:cv2.putText(src, str, (x0,y0), font, size, color, thickness, linetype) 我们需要对图片加以注释,putText()就显得极其重要,各个参数中文意思为:绘画图像,文字,位置坐标,字体,字体大小,字体颜色,字体粗细及线型,建议线型使用cv2.LINE_AA,其中关于font,openCV支持的字体,看一下不同样式效果图(其他参数相同,仅改变字体格式,没有传递linetype,字体边缘锯齿还是比较严重),通常用第一种就够了。

总结

由于最近经常用到这些函数,这里做一下记录,以后用的时候直接回来看博客就行了,节省时间。

举报

相关推荐

0 条评论