1. 介绍
OpenCV作为一款功能强大的计算机视觉库,被广泛地应用于图像处理和计算机视觉领域。
除了在机器视觉和人工智能领域有者广泛的应用,OpenCV 还能够媲美艺术家的创造力,通过其强大的绘图函数,绘制出令人叹为观止的艺术画作。
OpenCV中的绘图函数为我们提供了丰富多样的工具,能够绘制出各种形状和效果。例如,我们可以使用线条函数画出细腻的轮廓,使用填充函数给图像增添色彩和渐变效果,使用文本函数添加文字说明等等。这些绘图函数结合起来,让我们能够在图像中创造出各种想象力丰富的人物形象。
除了线条和填充函数,OpenCV 还提供了文本函数,可以方便地在图像中添加文字说明或者签名。我们可以选择合适的字体、大小和位置, 我们的艺术画作增添独特的个性和风格。
OpenCV 提供了丰富多样的绘图函数,赋予了我们绘制令人叹为观止的艺术画作的能力。通过灵活运用这些函数,我们可以创造出多样化、创新化的艺术形象。当然,艺术创作需要艺术家自身的创造力和个性的体现,OpenCV 只是辅助工具之一。无论如何,OpenCV 为我们打造艺术画作提供了更为便捷和丰富的方式和可能性,这也是现代科技给艺术创作带来的一大进步。
2. 操作步骤
1)画线
要画一条线,只需要告诉函数这条线的起点和终点。即可画一条从左上方到右下角的线段。
cv2.line(image,starting cordinates, ending cordinates, color, thickness)
# 载入库
import cv2
import numpy as np
from matplotlib import pyplot as plt
# 画一条5像素的对角蓝线
image = np.zeros((512,512,3), np.uint8)
#cv2.line(image, (startposition), (endposition), (Farbe der Linie), Linienbreite)
cv2.line(image, (0,0), (511,511), (255,127,0), 5)
cv2.line(image, (511,0), (0,511), (255,127,0), 5)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
plt.imshow(image),plt.title('Blue Line')
plt.xticks([]), plt.yticks([]) # 隐藏 x 轴和 y 轴上的刻度值
plt.show()
2) 画矩形
要画一个矩形,需要告诉函数的左上角顶点和右下角顶点的坐标。
# 绘制一个矩形
image = np.zeros((512,512,3), np.uint8)
# eine negative Linienbreite füllt das viereck aus
cv2.rectangle(image, (100,100), (300,250), (127,50,127), -1)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
plt.imshow(image),plt.title('Rectangle')
plt.xticks([]), plt.yticks([]) # 隐藏 x 轴和 y 轴上的刻度值
plt.show()
3) 画圆
要面圆的话,只需要指定圆形的中心点坐标和半径大小。
cv2.cirlce(image, center, radius, color, fill)
image = np.zeros((512,512,3), np.uint8)
#cv2.circle(image, (Zentrum), Radius, (15,75,50), -1)
cv2.circle(image, (350, 350), 100, (15,75,50), 10)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
plt.imshow(image),plt.title('Circle')
plt.xticks([]), plt.yticks([]) # 隐藏 x 轴和 y 轴上的刻度值
plt.show()
4) 画椭圆
画椭圆比较复杂,我们要多输入几个参数。
一个参数是中心点的位置坐标。另一个参数是长轴和短轴的长度。椭圆沿逆时针方向旋转的角度。椭圆弧演顺时针方向起始的角度和结束角度,如果是0和360,就是整个椭圆。查看cv2.ellipse()可以得到更多信息。
image = np.zeros((512,512,3), np.uint8)
cv2.ellipse(image,(256,256),(100,50),0,0,180,255,-1)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
plt.imshow(image),plt.title('ellipse')
plt.xticks([]), plt.yticks([]) # 隐藏 x 轴和 y 轴上的刻度值
plt.show()
5) 画多边形
画多边形,需要指定每个顶点的坐标。用这些点的坐标构建一个大小等于行数X1,X2的数组,行数就是点的数目。这个数组的数据类型必须为int32。
image = np.zeros((512,512,3), np.uint8)
# 让我们定义四个点
pts = np.array( [[10,50], [400,50], [90,200], [50,500]], np.int32)
print(pts.shape)
# 现在让我们定义折线
pts = pts.reshape((-1,1,2))
print(pts.shape)
cv2.polylines(image, [pts], True, (0,0,255), 3)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
plt.imshow(image),plt.title('Polygon')
plt.xticks([]), plt.yticks([]) # 隐藏 x 轴和 y 轴上的刻度值
plt.show()
6)在图片上添加文字
要在图片上绘制文字,需要设置下列参数:
•要绘制的文字
•你要绘制的位置
•字体类型(通过查看cv2.putText()的文档找到支持的字体)
• 字体的大小
•文字的一般属性如颜色,粗细,线条的类型等。
为了更好看一点推荐使用 linetype=cv2. LINE_AA。
image = np.zeros((512,512,3), np.uint8)
cv2.putText(image, 'Hello World!', (75,290), cv2.FONT_HERSHEY_COMPLEX, 2, (100,170,0), 3)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
plt.imshow(image),plt.title('Hello World!')
plt.xticks([]), plt.yticks([]) # 隐藏 x 轴和 y 轴上的刻度值
plt.show()