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)
字体
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 |
示例
以下程序为一张展示着著名足球运动员Lionel Messi的照片添加了一个文本标题。
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()