Python学习笔记第七十七天(OpenCV绘画功能)
2023-12-16 17:31:31
OpenCV绘画功能
画线
在OpenCV中,我们可以使用cv2.line()函数来绘制一条线。该函数接受以下参数:
- img:要在其上绘制线条的图像。
- pt1:线条的起始点坐标。
- pt2:线条的结束点坐标。
- color:线条的颜色。对于彩色图像,可以使用BGR格式表示颜色,例如(255, 0, 0)表示蓝色。
- thickness:线条的粗细。
- lineType:线条的类型。对于8位图像,使用8,对于16位图像,使用16。
- shift:线条的精度。
下面是一个简单的例子,演示如何在图像上绘制一条蓝色的线:
import cv2
import numpy as np
# 创建一个空白图像
img = np.zeros((512, 512, 3), dtype="uint8")
# 绘制一条蓝色的线
cv2.line(img, (0, 0), (511, 511), (255, 0, 0), 5)
# 显示图像
cv2.imshow("Line", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
画矩形
在OpenCV中,我们可以使用cv2.rectangle()函数来绘制矩形。该函数接受以下参数:
- img:要在其上绘制矩形的图像。
- pt1:矩形的左上角坐标。
- pt2:矩形的右下角坐标。
- color:矩形的颜色。对于彩色图像,可以使用BGR格式表示颜色。
- thickness:矩形边框的粗细。如果thickness为负数(通常为-1),则绘制填充矩形。
- lineType:线条的类型。对于8位图像,使用8,对于16位图像,使用16。
- shift:线条的精度。
下面是一个简单的例子,演示如何在图像上绘制一个蓝色的矩形:
import cv2
import numpy as np
# 创建一个空白图像
img = np.zeros((512, 512, 3), dtype="uint8")
# 绘制一个蓝色的矩形
cv2.rectangle(img, (128, 128), (480, 480), (255, 0, 0), 3)
# 显示图像
cv2.imshow("Rectangle", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
画圆
在OpenCV中,我们可以使用cv2.circle()函数来绘制圆形。该函数接受以下参数:
- img:要在其上绘制圆形的图像。
- center:圆心的坐标。
- radius:圆的半径。
- color:圆形的颜色。对于彩色图像,可以使用BGR格式表示颜色。
- thickness:圆的边框粗细。如果thickness为负数(通常为-1),则绘制填充圆形。
- lineType:线条的类型。对于8位图像,使用8,对于16位图像,使用16。
- shift:线条的精度。
下面是一个简单的例子,演示如何在图像上绘制一个蓝色的圆形:
import cv2
import numpy as np
# 创建一个空白图像
img = np.zeros((512, 512, 3), dtype="uint8")
# 绘制一个蓝色的圆形
cv2.circle(img, (256, 256), 100, (255, 0, 0), 3)
# 显示图像
cv2.imshow("Circle", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
画椭圆
在OpenCV中,我们可以使用cv2.ellipse()函数来绘制椭圆。该函数接受以下参数:
- img:要在其上绘制椭圆的图像。
- center:椭圆中心的坐标。
- axes:椭圆的长轴和短轴。
- angle:椭圆的旋转角度。
- startAngle:起始角度。
- endAngle:结束角度。
- color:椭圆的颜色。对于彩色图像,可以使用BGR格式表示颜色。
- thickness:椭圆边框的粗细。如果thickness为负数(通常为-1),则绘制填充椭圆。
- lineType:线条的类型。对于8位图像,使用8,对于16位图像,使用16。
- shift:线条的精度。
下面是一个简单的例子,演示如何在图像上绘制一个蓝色的椭圆:
import cv2
import numpy as np
# 创建一个空白图像
img = np.zeros((512, 512, 3), dtype="uint8")
# 绘制一个蓝色的椭圆
cv2.ellipse(img, (256, 256), (100, 50), 0, 0, 180, (255, 0, 0), 3)
# 显示图像
cv2.imshow("Ellipse", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
画多边形
在OpenCV中,我们可以使用cv2.polylines()函数来绘制多边形。该函数接受以下参数:
- img:要在其上绘制多边形的图像。
- points:多边形的顶点坐标列表。每个顶点都是一个(x, y)坐标对。
- isClosed:是否闭合多边形。如果为True,则多边形闭合;如果为False,则不闭合。
- color:多边形的颜色。对于彩色图像,可以使用BGR格式表示颜色。
- thickness:多边形边框的粗细。如果thickness为负数(通常为-1),则绘制填充多边形。
- lineType:线条的类型。对于8位图像,使用8,对于16位图像,使用16。
- shift:线条的精度。
下面是一个简单的例子,演示如何在图像上绘制一个蓝色的三角形:
import cv2
import numpy as np
# 创建一个空白图像
img = np.zeros((512, 512, 3), dtype="uint8")
# 绘制一个蓝色的三角形
points = np.array([[100, 100], [200, 100], [150, 200]], dtype="int32")
cv2.polylines(img, [points], True, (255, 0, 0), 3)
# 显示图像
cv2.imshow("Polygon", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
向图像添加文本
在OpenCV中,我们可以使用cv2.putText()函数向图像添加文本。该函数接受以下参数:
img
:要在其上添加文本的图像。text
:要添加的文本内容。org
:文本字符串的左上角坐标(即基线坐标)。它是一个包含两个元素(x坐标和y坐标)的元组,例如(x, y)。fontFace
:字体类型。OpenCV支持多种字体类型,包括HersheySimplex、HersheyComplex等。fontScale
:字体大小。这是一个缩放因子,表示字体的宽度和高度与默认大小的比例。默认情况下,字体大小为1.0。thickness
:可选参数,用于指定文本线条的粗细。如果thickness为负数(通常为-1),则绘制填充文本。lineType
:线条的类型。对于8位图像,使用8,对于16位图像,使用16。bottomLeftOrigin
:布尔值,当它为True时,图像数据原点位于左下角。默认值为False。
在使用cv2.putText()函数时,需要确保图像是可写的,并且图像的数据类型和范围适合文本的绘制。此外,还需要根据具体的字体类型和字体大小选择合适的参数值。
以下是一个使用cv2.putText()函数向图像添加文本的简单示例:
import cv2
import numpy as np
# 创建一个空白图像
img = np.zeros((512, 512, 3), dtype="uint8")
# 在图像上添加蓝色的文本
cv2.putText(img, "Hello World", (100, 100), cv2.FONT_HERSHEY_SIMPLEX, 1.0, (255, 0, 0), 2)
# 显示图像
cv2.imshow("Text", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
向图像添加对角线
在OpenCV中,我们可以使用cv2.line()函数向图像添加对角线。该函数接受以下参数:
- img:要在其上添加对角线的图像。
- pt1:对角线的起点坐标。
- pt2:对角线的终点坐标。
- color:对角线的颜色。对于彩色图像,可以使用BGR格式表示颜色。
- thickness:对角线线条的粗细。
- lineType:线条的类型。对于8位图像,使用8,对于16位图像,使用16。
- shift:线条的精度。
下面是一个简单的例子,演示如何在图像上添加一条蓝色的对角线:
import cv2
import numpy as np
# 创建一个空白图像
img = np.zeros((512, 512, 3), dtype="uint8")
# 添加一条蓝色的对角线
cv2.line(img, (0, 0), (511, 511), (255, 0, 0), 5)
# 显示图像
cv2.imshow("Diagonal Line", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
后记
今天学习的是Python OpenCV绘画功能学会了吗。 今天学习内容总结一下:
- 画线
- 画矩形
- 画圆
- 画椭圆
- 画多边形
- 向图像添加文本
- 向图像添加对角线
文章来源:https://blog.csdn.net/qq_54129105/article/details/135034369
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!