python opencv实现简易画图板

1. 简介

本文将介绍如何用 Python 的 OpenCV 库实现一个简易画图板。画图板会有基本绘画功能,例如:绘制线段、矩形、圆等,同时也可以选择颜色和画笔粗细属性进行绘画。最后,我们可以保存我们的绘画为图片。

2. 准备工作

2.1 安装 OpenCV

在使用 OpenCV 之前,我们需要安装这个库。下面是安装步骤:

pip install opencv-python

安装完成后,我们还需要安装 OpenCV 拓展包:

pip install opencv-python-headless

这个拓展包包含了 OpenCV 的一些非常有用的组件。

2.2 导入库

我们需要导入以下库进行编程:

cv2:用于图像处理

numpy:用于处理数值计算

import cv2

import numpy as np

3. 创建画布

在绘制图形之前,我们需要先创建一个画布,这个画布可以用矩阵来表示。

canvas = np.zeros((500, 500, 3), dtype="uint8")

我们用 numpy 库创建一个 500x500 的像素矩阵来表示画布。最后一个参数表示图像的数据类型,这里我们用了无符号 8 位整数作为数据类型。这个类型可以存储图像中的 RGB 颜色信息。

4. 绘制图形

4.1 绘制线段

我们可以使用 OpenCV 库中的 line 函数来画一条直线。

cv2.line(canvas, (0, 0), (100, 100), (0, 255, 0), 2)

这个函数的参数如下所示:

canvas:画布数据

(0, 0):线段的起点坐标

(100, 100):线段的终点坐标

(0, 255, 0):线段的颜色(BGR 格式,绿色)

2:线段的粗细(像素)

这里绘制了一条从左上角起始,到右下角为止的绿色线段,粗细为 2px。

4.2 绘制矩形

使用 rectangle 函数,我们可以画一个矩形。

cv2.rectangle(canvas, (10, 10), (100, 100), (0, 0, 255), 2)

这个函数的参数如下所示:

canvas:画布数据

(10, 10):矩形的左上角坐标

(100, 100):矩形的右下角坐标

(0, 0, 255):线段的颜色(BGR 格式,蓝色)

2:线段的粗细(像素)

这里我们绘制了一个蓝色边框的矩形。

4.3 绘制圆形

使用 circle 函数,我们可以画一个圆形。

cv2.circle(canvas, (250, 250), 50, (255, 0, 0), 2)

这个函数的参数如下所示:

canvas:画布数据

(250, 250):圆心坐标

50:圆的半径

(255, 0, 0):线段的颜色(BGR 格式,红色)

2:线段的粗细(像素)

这里我们绘制了一个红色圆形。

4.4 绘制文本

使用 putText 函数,我们可以在画布上写入一些文字。

cv2.putText(canvas, "Hello World", (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)

这个函数的参数如下所示:

canvas:画布数据

"Hello World":要写入画布的文字内容

(10, 30):文字基线的起点位置

cv2.FONT_HERSHEY_SIMPLEX:文字的字体类型

1:文字的大小

(0, 255, 0):文字的颜色

2:文字的粗细

这里我们在画布左上角写入了一个绿色的 "Hello World" 文字。

5. 画笔颜色和粗细

为了使画图更灵活,我们可以为画笔指定不同的颜色和粗细属性。在这里,我们声明两个变量 color 和 thickness 来表示画笔的颜色和粗细属性:

color = (0, 255, 0)

thickness = 2

现在,我们可以使用这两个变量来创建新的图形:

cv2.line(canvas, (200, 0), (200, 500), color, thickness)

cv2.rectangle(canvas, (300, 300), (400, 400), color, thickness)

cv2.circle(canvas, (250, 250), 25, color, thickness)

cv2.putText(canvas, "Python OpenCV Drawing", (10, 200), cv2.FONT_HERSHEY_SIMPLEX, 1, color, thickness)

6. 整体代码

import cv2

import numpy as np

# 创建画布

canvas = np.zeros((500, 500, 3), dtype="uint8")

# 画笔颜色和粗细

color = (0, 255, 0)

thickness = 2

# 画直线

cv2.line(canvas, (0, 0), (100, 100), color, thickness)

# 画矩形

cv2.rectangle(canvas, (10, 10), (100, 100), color, thickness)

# 画圆形

cv2.circle(canvas, (250, 250), 50, color, thickness)

# 写入文字

cv2.putText(canvas, "Hello World", (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, color, thickness)

# 可以重复画(画多次)

cv2.line(canvas, (200, 0), (200, 500), color, thickness)

cv2.rectangle(canvas, (300, 300), (400, 400), color, thickness)

cv2.circle(canvas, (250, 250), 25, color, thickness)

cv2.putText(canvas, "Python OpenCV Drawing", (10, 200), cv2.FONT_HERSHEY_SIMPLEX, 1, color, thickness)

# 保存画布

cv2.imwrite("output.png", canvas)

# 显示画布

cv2.imshow("Canvas", canvas)

cv2.waitKey(0)

cv2.destroyAllWindows()

7. 结语

本文介绍了如何使用 OpenCV 库创建一个简易画图板。我们了解了如何使用 OpenCV 的绘图函数画直线、矩形、圆形和文本等等,同时也学习了如何给画笔指定颜色和粗细属性。这些基本的功能可以帮助我们更好地理解 OpenCV 的使用和图像处理的基础知识。

后端开发标签