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()
输出

