使用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()
输出
绘制直线
要绘制直线,可以使用 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()
输出
绘制矩形
要绘制矩形,可以使用 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()
输出
绘制圆形
要绘制圆形,可以使用 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()
输出
绘制椭圆
要绘制椭圆,可以使用 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()
输出
绘制多边形
要绘制多边形,可以使用 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()
输出
绘制文本
要使用 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()
输出
广告