我们可以在图像上绘制各种形状,如圆圈、矩形、椭圆、折线、凸多边形等。当我们想要突出显示输入图像中的任何对象时,这很有用。OpenCV为每种形状提供了相应的绘图函数。这里我们将学习绘图函数。

绘制圆圈

我们可以使用cv2.circle()函数在图像上绘制圆圈。其语法如下:

cv2.circle(img, center, radius, color[,thickness [, lineType[,shift]]])  

参数:

  • img - 表示给定的图像。
  • center - 圆的中心。
  • radius - 圆的半径。
  • color - 圆的颜色。
  • thickness - 表示圆圈轮廓的厚度,如果是正数的话。如果是负数,表示要绘制填充的圆。
  • lineType - 定义圆圈边界的类型。
  • shift - 表示中心和半径值的坐标中的小数位数。

考虑以下示例:

import numpy as np  
import cv2  
img = cv2.imread(r"C:\Users\DEVANSH SHARMA\cat.jpeg",1)  
cv2.circle(img,(80,80), 55, (0,255,0), -1)  
cv2.imshow('image',img)  
cv2.waitKey(0)  
cv2.destroyAllWindows()  

输出:

7-1.png

绘制矩形

OpenCV提供了一个函数来绘制简单、粗矩形或填充的正矩形。其语法如下:

cv2.rectangle(img, pt1, pt2, color[, thickness[,lineType[,shift]]])  

参数:

  • img - 表示图像。
  • pt1 - 正矩形的第一个顶点。
  • pt2 - 正矩形对角线上的另一个顶点。
  • color - 正矩形的颜色。
  • thickness - 表示构成矩形的线的厚度。负值(CV_FILLED)表示要绘制填充的矩形。
  • linetype - 表示线的类型。
  • shift - 表示点坐标中的小数位数。

考虑以下示例:

import numpy as np  
import cv2  
img = cv2.imread(r"C:\Users\DEVANSH SHARMA\cat.jpeg",1)  
cv2.rectangle(img,(15,25),(200,150),(0,255,255),15)  
cv2.imshow('image',img)  
cv2.waitKey(0)  
cv2.destroyAllWindows()  

输出:

7-2.png

绘制椭圆

我们可以使用cv2.ellipse()函数在图像上绘制椭圆。它可以绘制一个简单或粗椭圆弧,或者可以填充一个椭圆扇形。

cv2.ellipse(img, center, axes, angle, startAngle, endAngle, color[, thickness[, lineType[, shift]]])   
cv2.ellipse(img, box, color[, thickness[, lineType]])   

参数:

  • img - 表示图像。
  • box - 通过RotatedRect或CvBox2D表示的椭圆的另一种表示形式。这意味着该函数用于在曲线矩形中绘制椭圆。
  • color - 椭圆的颜色。
  • angle - 旋转的角度。
  • startAngle - 椭圆弧的起始角度(以度为单位)。
  • endAngle - 椭圆弧的终止角度(以度为单位)。
  • thickness - 如果值为正,则绘制椭圆弧轮廓的厚度。否则,指定要绘制填充的椭圆。
  • lineType - 定义椭圆边界的类型。
  • shift - 表示中心和轴值的坐标中的小数位数。

考虑以下示例:

import numpy as np  
import cv2  
img = cv2.imread(r"C:\Users\DEVANSH SHARMA\cat.jpeg",1)  
  
cv2.ellipse(img, (250, 150), (80, 20), 5, 0, 360, (0,0,255), -1)  
cv2.imshow('image',img)  
cv2.waitKey(0)  
cv2.destroyAllWindows()  

输出:

7-3.png

有两个绘制椭圆的函数。第一个函数用于绘制整个椭圆,而不是一个弧,通过传递startAngle=0endAngle=360。椭圆的第二个函数用于绘制椭圆轮廓、填充的椭圆、椭圆弧或填充的椭圆扇形。

绘制线条

OpenCV提供了line()函数,用于在图像上绘制线条。它在图像中的ptr1和ptr2点之间绘制一条线段。图像边界会裁剪线条。

cv2.line(img, pt1, pt2, color[, thickness[, lineType[, shift]]])  

参数:

  • img - 表示图像。
  • pt1 - 表示线段的第一个点。
  • pt2 - 表示线段的第二个点。
  • color - 表示线的颜色。
  • thickness - 表示线的粗细。
  • lineType -有各种线段类型:

    • 8(或省略) - 8连接线段。
    • 4 - 4连接线段。
    • CV_AA- 抗锯齿线段。
  • shift - 表示点坐标中的小数位数。

考虑以下示例:

import numpy as np  
import cv2  
img = cv2.imread(r"C:\Users\DEVANSH SHARMA\cat.jpeg",1)  
cv2.line(img,(10,0),(150,150),(0,0,0),15)  
cv2.imshow('image',img)  
cv2.waitKey(0)  
cv2.destroyAllWindows()  

输出:

7-4.png

在图像上写文本

我们可以使用putText()函数在图像上写文本。其语法如下。

cv2.putText(img, text, org, font, color)  

参数:

  • img - 表示图像。
  • text - 要在图像上写的文本。
  • org - 文本字符串在图像中的左下角。
  • font - 使用InitFont()初始化的CvFont结构。
  • color - 表示文本颜色。

考虑以下示例。

import numpy as np  
import cv2  
font = cv2.FONT_HERSHEY_SIMPLEX  
# Create a black image.  
img = cv2.imread(r"C:\Users\DEVANSH SHARMA\cat.jpeg",1)  
cv2.putText(img,'Hack Projects',(10,500), font, 1,(255,255,255),2)  
#Display the image  
cv2.imshow("image",img)  
cv2.waitKey(0)  

输出:

7-5.png

绘制多边形线段

我们可以在图像上绘制多边形线段。OpenCV提供了polylines()函数,用于在图像上绘制多边形曲线。其语法如下:

cv2.polyLine(img, polys, is_closed, color, thickness=1, lineType=8, shift=0)  

参数:

  • img - 表示图像。
  • pts - 表示多边形曲线的数组。
  • npts - 表示多边形顶点计数的数组。
  • ncounters - 表示曲线的数量。
  • is_Closed - 一个标志,指示绘制的多边形曲线是否是封闭的。
  • color - 多边形曲线的颜色。
  • thickness - 表示多边形曲线边缘的厚度。
  • lineType - 表示线段的类型。
  • shift- 表示点坐标中的小数位数。

考虑以下程序,在图像中绘制多边形曲线:

import numpy as np  
import cv2  
img = cv2.imread(r'C:\Users\DEVANSH SHARMA\forest.jpg',cv2.IMREAD_COLOR)  
#defining points for polylines  
pts = np.array([[100,50],[200,300],[700,200],[500,100]], np.int32)  
# pts = pts.reshape((-1,1,2))  
cv2.polylines(img, [pts], True, (0,255,255), 3)  
cv2.imshow('image',img)  
cv2.waitKey(0)  
cv2.destroyAllWindows()  

输出:

7-6.png

标签: OpenCV, OpenCV教程, OpenCV图像识别, OpenCV安装教程, OpenCV下载, OpenCV入门, OpenCV基础, OpenCV库, OpenCV学习, OpenCV指南, OpenCV教程中文版, OpenCV快速入门, OpenCV基础教程