Python学习笔记第七十七天(OpenCV绘画功能)

Python学习笔记第七十七天

  • OpenCV绘画功能
    • 画线
    • 画矩形
    • 画圆
    • 画椭圆
    • 画多边形
    • 向图像添加文本
    • 向图像添加对角线
  • 后记

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()函数向图像添加文本。该函数接受以下参数:

  1. img:要在其上添加文本的图像。
  2. text:要添加的文本内容。
  3. org:文本字符串的左上角坐标(即基线坐标)。它是一个包含两个元素(x坐标和y坐标)的元组,例如(x, y)。
  4. fontFace:字体类型。OpenCV支持多种字体类型,包括HersheySimplex、HersheyComplex等。
  5. fontScale:字体大小。这是一个缩放因子,表示字体的宽度和高度与默认大小的比例。默认情况下,字体大小为1.0。
  6. thickness:可选参数,用于指定文本线条的粗细。如果thickness为负数(通常为-1),则绘制填充文本。
  7. lineType:线条的类型。对于8位图像,使用8,对于16位图像,使用16。
  8. 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绘画功能学会了吗。 今天学习内容总结一下:

  1. 画线
  2. 画矩形
  3. 画圆
  4. 画椭圆
  5. 画多边形
  6. 向图像添加文本
  7. 向图像添加对角线

你可能感兴趣的:(Python,计算机视觉,python,学习,笔记,opencv,计算机视觉)