使用Python OpenCV模块在图像上绘制几何形状


OpenCV 的基本操作是在图像上绘图。它能够添加各种几何形状,例如直线、圆形和矩形等。

在进行图像分析时,我们经常需要突出显示图像的某个部分,例如添加一个定义该部分的矩形。或者用箭头指示某些内容。

cv2.line() − 此函数用于在图像上绘制直线。

cv2.rectangle() − 此函数用于在图像上绘制矩形。

cv2.circle() − 此函数用于在图像上绘制圆形。

cv2.putText() − 此函数用于在图像上写入文本。

cv2.ellipse() − 此函数用于在图像上绘制椭圆。

示例代码

import numpy as np
import cv2
my_img = np.zeros((350, 350, 3), dtype = "uint8")
cv2.imshow('Window', my_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出

Geometric Shapes

绘制直线

要绘制直线,可以使用 cv2.line() 函数。此函数接受五个参数:

  • 要绘制图像的图像对象
  • 起始点坐标 (x, y)
  • 结束点坐标 (x, y)
  • 笔触颜色,使用 BGR (注意,不是 RGB)
  • 笔触粗细(以像素为单位)

示例代码

import numpy as np
import cv2
my_img = np.zeros((350, 350, 3), dtype = "uint8")
# creating for line
cv2.line(my_img, (202, 220), (100, 160), (0, 20, 200), 10)
cv2.imshow('Window', my_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出

Draw Line

绘制矩形

要绘制矩形,可以使用 cv2.rectangle() 函数。此函数接受五个输入参数。

  • 要绘制图像的图像对象
  • 左上角顶点的坐标 (x, y)
  • 右下角顶点的坐标 (x, y)
  • 笔触颜色,使用 BGR (注意,不是 RGB)
  • 笔触粗细(以像素为单位)

示例代码

import numpy as np
import cv2
my_img = np.zeros((400, 400, 3), dtype = "uint8")
# creating a rectangle
cv2.rectangle(my_img, (30, 30), (300, 200), (0, 20, 200), 10)
cv2.imshow('Window', my_img)
# allows us to see image
# until closed forcefully
cv2.waitKey(0)
cv2.destroyAllWindows()

输出

Rectangle

绘制圆形

要绘制圆形,可以使用 cv2.circle() 函数。此函数接受五个输入参数。

  • 要绘制图像的图像对象
  • 中心坐标 (x, y)
  • 圆形的半径
  • 笔触颜色,使用 BGR (注意,不是 RGB)
  • 笔触粗细(以像素为单位)

示例代码

import numpy as np
import cv2
my_img = np.zeros((400, 400, 3), dtype = "uint8")
# creating circle
cv2.circle(my_img, (200, 200), 80, (0, 20, 200), 10)
cv2.imshow('Window', my_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出

Circle

绘制椭圆

要绘制椭圆,可以使用 cv2.ellipse() 函数。此函数接受八个输入参数。

  • 要绘制图像的图像对象
  • 中心坐标 (x, y)
  • 短轴和长轴的长度 (h, w)
  • 椭圆的旋转角度(逆时针计算)
  • 起始角度(顺时针计算)
  • 结束角度(顺时针计算)
  • 笔触颜色,使用 BGR (注意,不是 RGB)
  • 笔触粗细

示例代码

import numpy as np
import cv2
my_img = np.zeros((400, 400, 3), dtype = "uint8")
# creating for rectangle
cv2.ellipse(my_img,(256,256),(100,50),0,0,180,255,-1)
cv2.imshow('Window', my_img)
# allows us to see image
# until closed forcefully
cv2.waitKey(0)
cv2.destroyAllWindows()

输出

Ellipse

绘制多边形

要绘制多边形,可以使用 cv2.polylines() 函数。此函数需要五个参数。

  • 要绘制图像的图像对象
  • 坐标数组
  • 如果它是闭合线,则为 True
  • 笔触颜色
  • 笔触粗细

示例代码

import numpy as np
import cv2
my_img = np.zeros((400, 400, 3), dtype = "uint8")
pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)
pts = pts.reshape((-1,1,2))
cv2.polylines(my_img,[pts],True,(0,255,255))
cv2.imshow('Window', my_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出

Polygon

绘制文本

要使用 OpenCV 写入文本,可以使用 cv2.putText() 函数,它接受多个参数。

  • 要绘制图像的图像
  • 要写入的文本
  • 文本起始点的坐标
  • 要使用的字体
  • 字体大小
  • 文本颜色
  • 文本粗细
  • 使用的线条类型

示例代码

import numpy as np
import cv2
my_img = np.zeros((400, 400, 3), dtype = "uint8")
# Writing text
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(my_img, 'Tutorials Point', (50, 50),font, 0.8, (255, 0, 0), 2, cv2.LINE_AA)
cv2.imshow('Window', my_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出

Text

更新于:2019年7月30日

2K+ 浏览量

开启你的职业生涯

完成课程获得认证

开始学习
广告