1. 简介
OpenCV是一个广泛使用的开源计算机视觉库,支持各种平台。它可以帮助编程人员轻松地进行各种图像和视频处理操作,包括图像获取、图像增强和其他各种操作,是Python中最受欢迎的计算机视觉库之一。在本文中,我们将学习如何使用Python和OpenCV库来绘制图像。
2. 图形绘制
Python的OpenCV库提供了许多方法来绘制一些简单的图形元素,如线条、矩形、圆和多边形等。这些基本形状可以通过设置颜色、粗细、线型和透明度等参数改变外观属性。下面我们将详细介绍各种形状的绘制方法。
2.1 绘制线条
绘制线条需要指定线条的起始和结束点坐标以及颜色和线宽等参数。绘制线条的方法为:cv2.line(img, pt1, pt2, color, thickness)
,其中参数含义如下:
img: 要绘制的图像。
pt1: 线条的起点坐标。
pt2: 线条的终点坐标。
color: 线条的颜色。
thickness: 线条的宽度。
下面是一个例子,演示如何在一个黑色的图像上绘制一条白色的直线:
import numpy as np
import cv2
# 创建一个黑色的图像
img = np.zeros((512, 512, 3), np.uint8)
# 绘制一条白色的直线,起点为(0,0),终点为(511,511)
cv2.line(img, (0, 0), (511, 511), (255, 255, 255), 5)
# 显示图像
cv2.imshow('line', img)
cv2.waitKey(0)
代码运行结果如下:
2.2 绘制矩形
绘制矩形需要指定矩形的左上角和右下角坐标、颜色和矩形边框的宽度等参数。绘制矩形的方法为:cv2.rectangle(img, pt1, pt2, color, thickness)
,其中参数含义如下:
img: 要绘制的图像。
pt1: 矩形的左上角坐标。
pt2: 矩形的右下角坐标。
color: 矩形的颜色。
thickness: 矩形边框的宽度。
下面是一个例子,演示如何在一个黑色的图像上绘制一个红色的矩形:
import numpy as np
import cv2
# 创建一个黑色的图像
img = np.zeros((512,512,3), np.uint8)
#绘制一个红色的矩形,左上角坐标为(384,0),右下角坐标为(510,128)
cv2.rectangle(img,(384,0),(510,128),(0,0,255),3)
# 显示图像
cv2.imshow('rectangle',img)
cv2.waitKey(0)
代码运行结果如下:
2.3 绘制圆
绘制圆需要指定圆心坐标、半径、颜色和边框宽度等参数。绘制圆形的方法为:cv2.circle(img, center, radius, color, thickness)
,其中参数含义如下:
img: 要绘制的图像。
center: 圆心坐标。
radius: 圆的半径。
color: 圆的颜色。
thickness: 圆的边框宽度。
下面是一个例子,演示如何在一个黑色的图像上绘制一个绿色的圆形:
import numpy as np
import cv2
# 创建一个黑色的图像
img = np.zeros((512,512,3), np.uint8)
# 绘制一个绿色的圆形,圆心坐标为(447,63),半径为63
cv2.circle(img,(447,63), 63, (0,255,0), -1)
# 显示图像
cv2.imshow('circle',img)
cv2.waitKey(0)
代码运行结果如下:
2.4 绘制多边形
绘制多边形需要指定多边形顶点的坐标、颜色和边框宽度等参数。绘制多边形的方法为:cv2.polylines(img, pts, isClosed, color, thickness)
,其中参数含义如下:
img: 要绘制的图像。
pts: 多边形顶点的坐标列表。
isClosed: 是否绘制闭合多边形。
color: 多边形的颜色。
thickness: 多边形的边框宽度。
下面是一个例子,演示如何在一个黑色的图像上绘制一个蓝色的六边形:
import numpy as np
import cv2
# 创建一个黑色的图像
img = np.zeros((512,512,3), np.uint8)
# 定义六边形各顶点坐标
pts = np.array([[100,200],[250,100],[400,200],[400,350],[250,450],[100,350]], np.int32)
# 绘制一个蓝色的六边形,并设置为闭合多边形
cv2.polylines(img,[pts],True,(255,0,0),3)
# 显示图像
cv2.imshow('polygon',img)
cv2.waitKey(0)
代码运行结果如下:
3. 文字绘制
除了以上基本形状的绘制方法,OpenCV库还提供了一些绘制文本的函数,用于在图像上添加文字。这些函数的使用与前面介绍的函数类似。下面我们来看一下如何在图像中添加一些文字。
3.1 绘制文本
绘制文本需要指定文本内容、位置、字体、颜色和字体大小等参数。绘制文本的方法为:cv2.putText(img, text, org, font, fontScale, color, thickness)
,其中参数含义如下:
img: 要绘制的图像。
text: 要绘制的文本内容。
org: 文本左下角的坐标。
font: 字体类型。
fontScale: 字体大小。
color: 文本颜色。
thickness: 文本边框的宽度。
下面是一个例子,演示如何在一个黑色的图像中添加一行白色的文本:
import cv2
import numpy as np
# 创建一个黑色的图像
img = np.zeros((512, 512, 3), np.uint8)
# 绘制一行白色文本
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img, 'Hello World!',(50, 300), font, 2, (255, 255, 255), 3, cv2.LINE_AA)
# 显示图像
cv2.imshow('text', img)
cv2.waitKey(0)
代码运行结果如下:
3.2 调整字体和大小
通过设置不同的字体类型和大小,可以在绘制文本时获得不同的效果。OpenCV支持多种不同的字体类型,包括HERSHEY_SIMPLEX、HERSHEY_PLAIN、HERSHEY_DUPLEX等,字体大小通过指定一个缩放系数实现。下面是一个例子,演示如何调整字体类型和大小绘制文本:
import cv2
import numpy as np
# 创建一个黑色的图像
img = np.zeros((512, 512, 3), np.uint8)
# 绘制不同字体和大小的文本
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img, 'Hello World!', (50, 100), font, 1, (255, 255, 255), 2, cv2.LINE_AA)
cv2.putText(img, 'OpenCV', (150, 250), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 3, cv2.LINE_AA)
cv2.putText(img, 'Python', (200, 400), cv2.FONT_HERSHEY_DUPLEX, 3, (0, 0, 255), 4, cv2.LINE_AA)
# 显示图像
cv2.imshow('text', img)
cv2.waitKey(0)
代码运行结果如下:
总结
在本文中,我们学习了如何使用Python的OpenCV库来绘制图像。我们详细介绍了各种基本形状的绘制方法,包括线条、矩形、圆和多边形。我们还演示了如何在图像中添加文本。可以通过调整不同的参数来获得不同的绘制效果。希望这篇文章可以帮助你更好地理解OpenCV库和图像处理相关的知识。