OpenCV Python - 绘制形状和文本
在本章中,我们将学习如何借助 OpenCV-Python 在图像上绘制形状和文本。 让我们从了解在图像上绘制形状开始。
在图像上绘制形状
我们需要了解 OpenCV-Python 中所需的函数,这些函数可以帮助我们在图像上绘制形状。
函数
OpenCV-Python 包(称为 cv2)包含以下绘制相应形状的函数。
函数 | 说明 | 命令 |
---|---|---|
cv2.line() | 绘制连接两点的线段。 | cv2.line(img, pt1, pt2, color, thickness) |
cv2.circle() | 以给定点为中心绘制给定半径的圆 | cv2.circle(img, center, radius, color, thickness) |
cv2.rectangle | 绘制一个矩形,给定点为左上角和右下角。 | cv2.rectangle(img, pt1, pt2, color, thickness) |
cv2.ellipse() | 绘制简单的粗椭圆弧或填充椭圆扇区。 | cv2.ellipse(img, center, axes, angle, startAngle, endAngle, color, thickness) |
参数
上述函数的常用参数如下 −
序号 | 功能与说明 |
---|---|
1 | img 要绘制形状的图像 |
2 | color 形状的颜色。 对于 BGR,将其作为元组传递。 对于灰度,只需传递标量值。 |
3 | thickness 线或圆的粗细。如果为圆或封闭图形,传递-1,它将填充形状。 |
4 | lineType 线类型,是否8连线,抗锯齿线等。 |
示例
下面的例子展示了如何在图像上绘制形状。 同样的程序如下 −
import numpy as np import cv2 img = cv2.imread('LENA.JPG',1) cv2.line(img,(20,400),(400,20),(255,255,255),3) cv2.rectangle(img,(200,100),(400,400),(0,255,0),5) cv2.circle(img,(80,80), 55, (255,255,0), -1) cv2.ellipse(img, (300,425), (80, 20), 5, 0, 360, (0,0,255), -1) cv2.imshow('image',img) cv2.waitKey(0) cv2.destroyAllWindows()
输出
绘制文字
cv2.putText() 函数用于在图像上写入文本。 其命令如下 −
img, text, org, fontFace, fontScale, color, thickness)
Fonts
OpenCV 支持以下字体−
字体名称 | 字体大小 |
---|---|
FONT_HERSHEY_SIMPLEX | 0 |
FONT_HERSHEY_PLAIN | 1 |
FONT_HERSHEY_DUPLEX | 2 |
FONT_HERSHEY_COMPLEX | 3 |
FONT_HERSHEY_TRIPLEX | 4 |
FONT_HERSHEY_COMPLEX_SMALL | 5 |
FONT_HERSHEY_SCRIPT_SIMPLEX | 6 |
FONT_HERSHEY_SCRIPT_COMPLEX | 7 |
FONT_ITALIC | 16 |
示例
以下程序将文本标题添加到一张展示著名足球运动员莱昂内尔·梅西的照片中。
import numpy as np import cv2 img = cv2.imread('messi.JPG',1) txt="Lionel Messi" font = cv2.FONT_HERSHEY_SIMPLEX cv2.putText(img,txt,(10,100), font, 2,(255,255,255),2,cv2.LINE_AA) cv2.imshow('image',img) cv2.waitKey(0) cv2.destroyAllWindows()