在上述所有功能中,您将看到一些常见的参数,如下所示:
去画一条线,你需要传递线条的开始和结束的坐标。我们将创建一个黑色图像,并在左上角到右下角画一条蓝色的线。
示例代码:
import numpy as np
import cv2 as cv
# 创建一个黑色的图像
img = np.zeros((512, 512, 3), np.uint8)
# 画一条 5px 宽的蓝色对角线
cv.line(img, (0, 0), (511, 511), (255, 0, 0), 5)
cv.imshow("线条", img)
cv.waitKey(0)
cv.destroyWindow("线条")
# cv.destroyAllWindows()
效果图:
画一个矩形,你需要矩形的左上角和右下角。这次我们将会在图像的右上角画一个绿色的矩形。
示例代码:
import numpy as np
import cv2 as cv
# 创建一个黑色的图像
img = np.zeros((512, 512, 3), np.uint8)
# 画矩形
cv.rectangle(img, (384, 0), (510, 128), (0, 255, 0), 3)
cv.imshow("矩形", img)
cv.waitKey(0)
cv.destroyWindow("矩形")
# cv.destroyAllWindows()
效果图:
画一个圆,你需要它的圆心和半径。我们将在上面绘制的矩形上画一个内圆。
示例代码:
import numpy as np
import cv2 as cv
# 创建一个黑色的图像
img = np.zeros((512, 512, 3), np.uint8)
# 画矩形
cv.rectangle(img, (384, 0), (510, 128), (0, 255, 0), 3)
# 画圆
cv.circle(img, (447, 63), 63, (0, 0, 255), -1)
cv.imshow("画圆", img)
cv.waitKey(0)
cv.destroyWindow("画圆")
# cv.destroyAllWindows()
效果图:
画一个圆,你需要它的圆心和半径。我们将在上面绘制的矩形上画一个圆的边。主要是改变cv.circle的thickness参数。上面用的实心圆用的是-1,这里我们改成3。
示例代码:
import numpy as np
import cv2 as cv
# 创建一个黑色的图像
img = np.zeros((512, 512, 3), np.uint8)
cv.rectangle(img, (384, 0), (510, 128), (0, 255, 0), 3)
# 画圆
cv.circle(img, (447, 63), 63, (0, 0, 255), 3)
cv.imshow("画圆", img)
cv.waitKey(0)
cv.destroyWindow("画圆")
# cv.destroyAllWindows()
效果图:
画一个椭圆,你需要传好几个参数。一个参数是圆心位置 (x,y)。下个参数是轴的长度 (长轴长度,短轴长度)。角度是椭圆在你逆时针方向的旋转角度。startAngle 和 endAngle 表示从长轴顺时针方向测量的椭圆弧的起点和终点。如整圆就传 0 和 360。更多细节请看 cv.ellipse() 的文档。下面是在这个图像中间画的一个半椭圆例子。
示例代码:
import numpy as np
import cv2 as cv
# 创建一个黑色的图像
img = np.zeros((512, 512, 3), np.uint8)
# 画椭圆
# 只能画出椭圆一半,也就是圆转椭圆只计算了一半的角度
# 效果见,图1
# cv.ellipse(img, (256, 256), (100, 50), 0, 0, 180, 255, -1)
# 画出椭圆需要计算360角度
# 效果见,图2
cv.ellipse(img, (256, 256), (100, 50), 0, 0, 360, 255, -1)
cv.imshow("画椭圆", img)
cv.waitKey(0)
cv.destroyWindow("画椭圆")
# cv.destroyAllWindows()
效果图:
图1:
图2:
画多边形,首先你需要顶点的做坐标。将这些点组成一个形状为 ROWSx1x2 的数组,ROWS 是顶点数,它应该是 int32 类型。这里我们绘制一个顶点是黄色的小多边形。
示例代码:
import numpy as np
import cv2 as cv
# 创建一个黑色的图像
img = np.zeros((512, 512, 3), np.uint8)
# 画多边形
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))
cv.imshow("画多边形", img)
cv.waitKey(0)
cv.destroyWindow("画多边形")
# cv.destroyAllWindows()
效果图:
注意:
在图像上加文字,你需要指定以下内容。
我们将在图像上写一个白色的 OpenCV 。
示例代码:
import numpy as np
import cv2 as cv
# 创建一个黑色的图像
img = np.zeros((512, 512, 3), np.uint8)
# 给图像加文字
font = cv.FONT_HERSHEY_SIMPLEX
cv.putText(img, 'OpenCV', (10, 400), font, 4, (255, 255, 255), 2, cv.LINE_AA)
cv.imshow("给图像加文字", img)
cv.waitKey(0)
cv.destroyWindow("给图像加文字")
# cv.destroyAllWindows()
效果图: