📜  OpenCV绘图函数

📅  最后修改于: 2021-01-07 06:35:20             🧑  作者: Mango

OpenCV绘图功能

我们可以在图像上绘制各种形状,例如圆形,矩形,椭圆形,折线,凸形等。当要突出显示输入图像中的任何对象时,可以使用它。 OpenCV提供每种形状的功能。在这里,我们将了解绘图功能。

绘图圈

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

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

参数:

  • img-它代表给定的图像。
  • 圆的中心-中心
  • 圆的半径-半径
  • 颜色-圆形颜色
  • 厚度-表示圆形轮廓的粗细(如果为正)。负厚度表示要绘制一个实心圆。
  • 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提供一个函数来绘制一个简单的,厚或填充右矩形。语法如下:

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

参数:

  • img-它代表图像。
  • pt1-表示矩形的顶点
  • pt2-表示与pt1相反的矩形的顶点。
  • color-表示亮度的矩形颜色(灰度图像)。
  • 厚度-它代表组成矩形的线条的粗细。负值(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()

输出:

绘制椭圆

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

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

参数:

  • img-代表图片。
  • 盒-它代表通过RotatedRect或CvBox2D替代椭圆表示。这意味着该函数用于在弯曲的矩形中绘制椭圆。
  • 颜色-它表示椭圆的颜色。
  • 角度-表示旋转角度。
  • startAngle-表示椭圆弧的初始角度(以度为单位)。
  • endAngle-表示椭圆弧的终止角度(以度为单位)。
  • 厚度-如果该值为正,则用于绘制椭圆弧轮廓的厚度。否则,这指定要绘制一个填充的椭圆。
  • 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()

输出:

有两个绘制椭圆的功能。第一个函数用于绘制整个椭圆,而不是绕过startAngle = 0endAngle = 360的圆弧。椭圆的第二个函数用于绘制椭圆轮廓,实心椭圆,椭圆弧或实心椭圆扇形。

画线

OpenCV提供line()函数在图像上绘制线条。它在图像中的ptr1和ptr2点之间绘制线段。图像边界剪切线。

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

参数:

  • img-它代表图像。
  • pt1-表示线段的第一个点。
  • pt2-表示线段的第二点。
  • color-代表线条颜色
  • 厚度-代表线的粗细
  • 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()

输出:

在图像上写文字

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

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

参数:

  • img:代表图片
  • 文字:它代表我们要在图像上书写的文字。
  • org:表示图像中文本字符串的左下角。
  • 字体: CvFont结构是使用InitFont()初始化的。
  • 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提供了polylines()函数,该函数用于在图像上绘制多边形曲线。语法如下:

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

参数:

  • img-代表图片。
  • pts-表示多边形曲线的数组。
  • npts-表示多边形顶点计数器的数组。
  • ncounters-代表曲线数。
  • is_Closed-这是一个标志,指示绘制的折线是否关闭。
  • 颜色-颜色折线。
  • 厚度-代表折线边缘的厚度。
  • 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()

输出: