快乐学习
前程无忧、中华英才非你莫属!

3-OpenCV-绘制函数

前言


  • 在本小节你将学习用OpenCV绘制不同的几何图形

  • 你将学习以下几个函数:cv.line(), cv.circle() , cv.rectangle(), cv.ellipse(), cv.putText()

在上述所有函数中你将看到以下几个常见的参数:

  • img:用于设置要绘制形状的图像

  • color:用于设置绘制图案的颜色。对于BGR图像,将其用元组传递,例如:(255,0,0)为蓝色。对于灰度图像,只需传递标量值。

  • thickness:用于设置线条或圆形等的厚度。如果是- 1则在图案内生成闭合图案并填充颜色。这个参数的默认厚度为1。

  • lineType:用于设置线条的类型,有8型连接,抗锯齿等。默认情况是8型连接。cv2.LINE_AA为抗锯齿,这样看起来会非常平滑。


1. 绘制直线

要绘制线条,你需要传递线条的起点和终点坐标。我们将创建一个黑色图像,并在其上从左上角到右下角绘制一条蓝线。 参考以下代码:

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)

2. 绘制矩形

要绘制矩形,你需要传递矩形的左上角和右下角的坐标。这次我们将在图像的右上角绘制一个绿色矩形。 参考一下代码:

cv.rectangle(img,(384,0),(510,128),(0,255,0),3)

3. 绘制圆形

要绘制圆形,你需要传递其圆点坐标和半径,我们将在上面绘制的矩形内绘制一个圆。 参考一下代码:

cv.circle(img,(447,63), 63, (0,0,255), -1)

4. 绘制椭圆

要绘制椭圆,我们需要传递四个参数,第一个是椭圆中心位置(x,y),第二个是长轴长度和断轴长度(a,b),第三个是椭圆在逆时针方向上的旋转角度,第四个是startAngle和endAngle表示从主轴顺时针方向测量的椭圆弧的起点和终点,即给出值0和360给出完整的椭圆,给出值180则画出半个椭圆。 参考一下代码:

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

5. 绘制多边形

要绘制多边形,首先需要顶点坐标。 将这些点转换为ROWSx1x2的数组,其中ROWS是顶点数,它应该是int32类型。在这里,我们绘制一个带有四个黄色顶点的小多边形。 参考一下代码:

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()要好得多,速度更快。

6. 向图像中添加文字

要将文本放入图像中,你需要传递以下几个参数:第一个是你要写入的文本数据,第二个是你要放置的位置(即文本数据的左下角),第三个是字体类型(检查cv.putText()文档以获取支持的字体),的四个是字体大小,之后还有一些常规的参数,比如颜色、粗细、线型等,为了更好看,建议使用lineType = cv.LINE_AA作为线型参数的值。

我们将在图像上编写白色的OpenCV字样。 参考以下代码:

font = cv.FONT_HERSHEY_SIMPLEXcv.putText(img,'OpenCV',(10,500), font, 4,(255,255,255),2,cv.LINE_AA)

7. 结果

是时候看看我们所绘制图案的结果了,正如文章之间所讲述的那样,通过显示图像将上面六个绘制结果显示出来。 窗口将如下图所示:

打赏

未经允许不得转载:同乐学堂 » 3-OpenCV-绘制函数

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

特别的技术,给特别的你!

联系QQ:1071235258QQ群:367203382
error: Sorry,暂时内容不可复制!