python opencv如何实现图片绘制

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库和图像处理相关的知识。

后端开发标签