在OpenCV Python中使用cv2.rectangle()绘制矩形的实例

3,493 阅读3分钟

简介

在本教程中,我们将向你展示如何通过使用cv2.rectangle()函数在OpenCV Python中绘制矩形。矩形通常用于创建物体检测的边界框,因此你应该知道如何在OpenCV Python中创建它们。我们将向你展示cv2.rectangle()的语法和一些例子,以便让初学者更好地理解。

OpenCV Python中的矩形:cv2.rectangle()

OpenCV Python有一个rectangle()函数,可以很容易地用于在图像上创建矩形形状。让我们看看它的语法如下

语法

cv2.rectangle(image, pt1, pt2, color, thickness)

  • image -就是要绘制矩形的图像
  • pt1 -矩形的顶点,位于左上角
  • pt2 -矩形在右下角的顶点
  • color -矩形线的颜色,用RGB表示
  • thickness -是线条的厚度

它不返回任何东西,并在原始图像上原地绘制矩形,这意味着在图像上绘制的矩形将是永久性的。

cv2.Rectangle()在Python OpenCV中的例子

导入所需的库

在浏览例子之前,让我们首先导入一些必要的库,如下所示

在[1]中:

import cv2
import numpy as np
import matplotlib.pyplot as plt

%matplotlib inline

创建空白图像的函数

我们将创建一个实用的函数来创建一个大小为512×512和3个颜色通道的空图像,我们将在上面画矩形作为例子。

在[2]中:

def generate_blank_image():

    return np.ones(shape=(512,512,3), dtype=np.int16)

让我们通过下面的调用看到这个函数的作用。

在[3]中:

img = generate_blank_image()
plt.imshow(img)

输出[3]:

<matplotlib.image.AxesImage at 0x1e14d0dc9b0>。

例子 - 1 : 用cv2.rectangle()绘制简单的矩形

在这个例子中,我们要在空白图像上画一个简单的矩形,其线条是红色的,线条的厚度是10。

我们生成一个空图像,并将其与矩形的两个顶点坐标、红色的RGB值(255,0,0)和厚度=10一起传给cv2.rectangle()。

在[4]:

img1 = generate_blank_image()

cv2.rectangle(img1, pt1=(400,200), pt2=(100,50), color=(255,0,0), thickness=10)

plt.imshow(img1)

输出[4]:

<matplotlib.image.AxesImage at 0x1e14d3e0ac8>。

Example of Rectangle in cv2.rectangle()

例子 - 2 : 用cv2.rectangle()绘制填充矩形

在这个例子中,我们将在空白图像上画一个矩形,这个矩形被填充为蓝色。

为了填充这个矩形,我们在cv2.rectangle()函数中使用了厚度=-1。

In[5]:

img2 = generate_blank_image()

cv2.rectangle(img2, pt1=(400,300), pt2=(100,100), color=(255,255,0), thickness= -1)

plt.imshow(img2)

输出[5]:

<matplotlib.image.AxesImage at 0x1e14e640ba8>。

Example of Filled Rectangle in cv2.rectangle()

例子 - 3 : 用cv2.rectangle()在图像上画矩形

在这个例子中,我们使用了一张真实的猫的图像,并在上面画了一个红色的矩形。我们手动计算了pt1和pt2的值,以便在猫的脸上正确地绘制矩形。

在[6]:

img3 = cv2.imread('cat.jpg')
cv2.rectangle(img3, pt1=(400,100), pt2=(1000,700), color=(255,0,0), thickness=10)
plt.imshow(img3)

输出[6]:

Example of Rectangle in OpenCV Python

总结

希望你觉得这个关于如何在OpenCV中画矩形的简短教程很有帮助。我们涵盖了cv2 rectangle()函数的语法和不同类型的例子,以便初学者更好地理解。

参考资料 -OpenCV文档