OpenCV_Python API 官方文档学习_ cv2 绘制基本几何图形
官方的文档:
Goal
- Learn to draw different geometric shapes with OpenCV
- You will learn these functions : cv2.line(), cv2.circle() , cv2.rectangle(), cv2.ellipse(), cv2.putText() etc
目的有2个:
1. 在OpenCV中,学习绘制不同的几何形状(矩形,圆形……)
2. 学习一系列函数: cv2.line(), cv2.circle() , cv2.rectangle(), cv2.ellipse(), cv2.putText()……
代码:
在上述所有函数中,我们会用到一些常见的参数,下面一一讲解:
1. img : 要绘制图像的形状。
2. color :BGR形状的颜色,以元组的形式传递,例如:(255,0,0)表示蓝色。对于灰度,只需传递标量值即可。
3.thickness :设置线宽。如果是绘制圆形时候,该参数被设置成-1,那么该圆就会被填充。(封闭图形中,该参数-1表示填充该图形)。默认值为1。
4. lineType :设置线型。- -#!这儿没翻译出来。给大家把官方文档粘贴过来自行看一下。
Type of line, whether 8-connected, anti-aliased line etc. By default, it is 8-connected. cv2.LINE_AA
gives anti-aliased line which looks great for curves.
绘制直线
要画一条线,需要传递直线的起始坐标和结束坐标。我们将创建一个黑色图像,并在其上画一条从左上角到右下角的蓝线。
代码:
import numpy as np
import cv2
# Create a black image
img = np.zeros((512,512,3), np.uint8)
# Draw a diagonal blue line with thickness of 5 px
img = cv2.line(img,(0,0),(511,511),(255,0,0),thickness=1)
cv2.imshow('123',img)
cv2.waitKey(0)
上面是效果图。也就是画坐标(0,0)到(511,511)的直线。线宽设置的是1.颜色是蓝色。
绘制矩形
要绘制矩形,需要矩形的左上角和右下角的坐标 . 下面,我们将画一个绿色的矩形在右上角的图像.
代码:(可以在上面程序中加入下面这行代码)
img = cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)
绘制圆形
要画一个圆,需要圆的中心坐标和半径。下面,将在上面的的矩形内画一个圆圈。
代码:
img = cv2.circle(img,(447,63), 63, (0,0,255), -1)
绘制椭圆
绘制椭圆,需要传递几个参数。一个参数是中心位置(x,y)。下一个参数是轴长(长轴长、短轴长)。角度是椭圆逆时针方向旋转的角度。起始角和端角表示从长轴顺时针方向测量的椭圆弧的开始和结束。即给出0和360表示整个椭圆。下面的例子在图像的中心画一个半椭圆。详细说明见:cv2.ellipse()
代码:
img = cv2.ellipse(img,(256,256),(100,50),0,0,180,255,-1)
绘制多边形
要绘制多边形,首先需要顶点的坐标。将这些点设为一个形状为ROWSx1x2 的数组,其中ROWS是顶点的数目,并且应该是类型32。在这里,我们画了一个小的多边形,有四个顶点的黄色。
代码:
pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)
pts = pts.reshape((-1,1,2))
img = cv2.polylines(img,[pts],True,(0,255,255))
提示:
1. 如果第三个参数是false,那么将得到一个折线连接所有的点,而不是一个封闭的图形。
2. cv2.polyline()可用于绘制多条线。只需创建要绘制的所有线条的列表,并将其传递给函数。所有的线都将单独划出。与为每一行调用cv2.line()相比,绘制一组直线的方法更好、更快。
为图片添加文本信息
要将文本放入图像中,需要设置一下的内容:
1. 要写入的文本数据
2. 要放置它的位置坐标(即数据开始的左下角)。
3. 字体类型。
4. 字体大小。
5. 参数,如颜色,厚度,线条类型等。如果想要详细查看有什么属性,可参考:lineType = cv2.LINE_AA
下面代码:(演示在图像中写入一个白色的OpenCV文字)
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,'OpenCV',(10,500), font, 4,(255,255,255),2,cv2.LINE_AA)