OpenCV 绘图函数

OpenCV 绘图函数

我们可以在图像上绘制各种形状,比如圆形、矩形、椭圆、多边形等等。当我们想要突出显示输入图像中的任何对象时,可以使用它。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()

输出:

OpenCV 绘图函数

绘制矩形

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

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

参数:

  • img- 它表示一张图片。
  • pt1- 它表示矩形的顶点。
  • pt2- 它表示与pt1相对的矩形的顶点。
  • 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()

输出:

OpenCV 绘图函数

绘制椭圆

通过使用 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()

输出:

OpenCV 绘图函数

有两个函数可用于绘制椭圆。第一个函数用于绘制完整的椭圆,而不是绕过起始角度为0和结束角度为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()

输出:

OpenCV 绘图函数

在图像上写文本

我们可以使用 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)

输出:

OpenCV 绘图函数

绘制多边线

我们可以在图像上绘制多边线。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()

输出:

OpenCV 绘图函数

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程