OpenCV-Python 绘制矩形、圆、线条、文字等
OpenCV提供了cv.line()、cv.circle()、cv.rectangle()、cv.ellipse()、cv.putText() 等函数,来让我们可以轻易的在图像中进行绘制一些常见图像信息,本示例将展示这些函数使用效果,本文代码最终运行效果如下:
我在其代码中已描述了各项代码的使用,如需具体了解可参见本文末尾的官方文档。
main.py
代码:
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.rectangle(img,(384,0),(510,128),(0,255,0),3)
# 绘制一个圆
# 要画一个圆,你需要它的中心坐标和半径。我们将在上面绘制的矩形内画一个圆圈。
cv.circle(img, (447,63), 63, (0,0,255), -1)
# 绘制一个椭圆
# 要绘制椭圆,我们需要传递几个参数。一个参数是中心位置 (x,y)。下一个参数是轴长度(长轴长度,短轴长度)。
# angle 是椭圆沿逆时针方向旋转的角度。startAngle 和 endAngle 表示从主轴顺时针方向测量的椭圆弧的起点和终点。
# 即给出值 0 和 360 给出完整的椭圆。有关更多详细信息,请查看cv.ellipse()的文档。下面的示例在图像的中心绘制一个半椭圆。
cv.ellipse(img, (256,256), (100,50), 0,0,180, 255, -1)
# 绘制多边形
# 要绘制多边形,首先需要顶点坐标。将这些点放入一个形状为 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))
# 绘制文本
font = cv.FONT_HERSHEY_SIMPLEX
cv.putText(img, 'OpenCV', (10,500), font, 4, (255,255,255), 2, cv.LINE_AA)
# 显示绘制结果到窗口中
cv.imshow('绘制结果展示',img)
cv.waitKey(0)
以上为本文的完整代码,直接运行即可实现本文所展示的效果。
本示例参考官方原文:https://docs.opencv.org/4.5.5/dc/da5/tutorial_py_drawing_functions.html