前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >opencv(4.5.3)-python(四)--绘图

opencv(4.5.3)-python(四)--绘图

作者头像
用户9875047
发布2022-07-04 14:16:02
8840
发布2022-07-04 14:16:02
举报
文章被收录于专栏:机器视觉全栈er

翻译及二次校对:cvtutorials.com

目标

  • • 学习用OpenCV绘制不同的几何图形
  • • 你将学习这些函数:cv.line(), cv.circle(), cv.rectangle(), cv.ellipse(), cv.putText() 等等。

代码

在上述所有的函数中,你会看到一些常见的参数,如下所示。

  • • img : 你想绘制形状的图片
  • • color : 形状的颜色。对于BGR,以一个元组的形式传递,例如。(255,0,0)表示蓝色。对于灰阶,只需传递标量值。
  • • thickness : 线条或圆等的厚度。如果对于像圆这样的封闭图形传递-1,它将填充该形状。默认thickness = 1
  • • lineType : 线条的类型,无论是8连线还是抗锯齿线等。cv.LINE_AA给出了抗锯齿线,这对曲线来说非常好。

绘制直线

要画一条线,你需要传递线的起点和终点坐标。我们将创建一个黑色的图像,在上面画一条从左上角到右下角的蓝线。

代码语言:javascript
复制
import numpy as np
import cv2 as cv
# Create a black image
img = np.zeros((512,512,3), np.uint8)
# Draw a diagonal blue line with thickness of 5 px
cv.line(img,(0,0),(511,511),(255,0,0),5)

绘制长方形

要画一个矩形,你需要矩形的左上角和右下角。这一次我们将在图像的右上角画一个绿色的矩形。

代码语言:javascript
复制
cv.rectangle(img,(384,0),(510,128),(0,255,0),3)

绘制圆

要画一个圆,你需要它的中心坐标和半径。我们将在上面画的矩形内画一个圆。

代码语言:javascript
复制
cv.circle(img,(447,63), 63, (0,0,255), -1)

cvtutorials.com:画圆语法中的-1表示这个圆表示被填充。

绘制椭圆

为了绘制椭圆,我们需要传递几个参数。一个参数是中心位置(x,y)。接下来的参数是轴的长度(主轴长度,小轴长度)。角度是椭圆在逆时针方向的旋转角度。startAngle和endAngle表示椭圆弧线的起点和终点,从主轴开始顺时针方向测量。更多细节,请查看cv.ellipse()的文档。下面的例子在图像的中心画了一个半椭圆。

代码语言:javascript
复制
cv.ellipse(img,(256,256),(100,50),0,0,180,255,-1)

绘制多边形

要画一个多边形,首先你需要顶点的坐标。把这些点变成一个ROWSx1x2形状的数组,其中ROWS是顶点的数量,它应该是int32类型。这里我们用黄色画了一个有四个顶点的小多边形。

代码语言:javascript
复制
pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)
pts = pts.reshape((-1,1,2))
cv.polylines(img,[pts],True,(0,255,255))

如果第三个参数是False,你会得到一个连接所有点的折线,而不是一个封闭的形状。cv.polylines() 可以用来绘制多条线。只要创建一个你想画的所有线条的列表并把它传给函数。所有的线都将被单独绘制。与为每条线调用cv.line()相比,这是一个更好更快绘制一组线的方法。

在图像中添加文本

要在图像中添加文本,你需要指定以下事项:

  • • 你想写的文本数据
  • • 你想放的位置的坐标(例如,左下角数据开始的地方)。
  • • 字体类型(查看cv.putText()文档以了解支持的字体)。
  • • 字体比例(指定字体的大小)
  • • 常规的东西,如颜色、厚度、lineType等。为了获得更好的外观,推荐使用lineType = cv.LINE_AA。

我们将在我们的图像上显示白色的OpenCV。

代码语言:javascript
复制
font = cv.FONT_HERSHEY_SIMPLEX
cv.putText(img,'OpenCV',(10,500), font, 4,(255,255,255),2,cv.LINE_AA)

结果

现在是时候看看我们绘图的最终结果了。正如你在以前的文章中所学习的那样,显示图像就可以看到它。

其他资源

  • • 椭圆函数中使用的角度不是我们平常所指的圆角。

练习

  • • 试着用OpenCV中的绘图函数来创建OpenCV的标志。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器视觉全栈er 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档