在 Python 中使用 OpenCV 模块绘制矩形

Vaibhav Vaibhav 2022年5月17日
在 Python 中使用 OpenCV 模块绘制矩形

OpenCV 是一个实时计算机视觉库。它适用于 Python、Java 和 C++ 等编程语言。使用 OpenCV,我们可以高效地绘制形状和处理图像。在本文中,我们将学习如何使用 OpenCV 模块绘制矩形。

使用 OpenCV 绘制矩形

OpenCV 模块有一个 rectangle() 函数,可用于绘制矩形。它返回一个图像对象。它接受以下参数。

  • img:它是必须在其上创建矩形的图像对象。
  • pt1:它是矩形的起始坐标。它接受一个带有 x 坐标值和 y 坐标值的元组。
  • pt2:它是矩形的结束坐标。它接受一个带有 x 坐标值和 y 坐标值的元组。
  • color:它是一个表示矩形颜色的元组。OpenCV 默认考虑 BGR 格式。因此,必须以 BGR 格式输入值,而不是一般的 RGB 格式。例如,(255, 0, 0) 代表蓝色,(0, 0, 255) 代表红色。
  • thickness:矩形边框的厚度。它的单位是 px-1 的厚度将用指定的颜色填充矩形。对于其他正厚度值,矩形将不会填充指定的颜色。它仅适用于边界。

现在让我们看看我们如何实际使用这个函数来绘制矩形。示例请参考以下代码。

import cv2
 
image_url = "full\\path\\to\\the\\image\\image.jpg" # Full path is needed
image = cv2.imread(image_url, cv2.COLOR_BGR2RGB)
start_point = (140, 140)
end_point = (500, 500)
color = (0, 0, 255)
thickness = 3
image_with_rectangle = cv2.rectangle(
    img = image,
    pt1 = start_point,
    pt2 = end_point, 
    color = color, 
    thickness = thickness
)
cv2.imshow("Image with a Rectangle", image_with_rectangle)
cv2.waitKey(0)

上面的代码首先从指定路径加载图像,使用 cv2.COLOR_BGR2RGB 将 BGR 色序转换为 RGB 色序,然后在图像上绘制一个大小为 360 x 360 的矩形。注意厚度值为正。这意味着矩形将没有填充颜色。

此外,我们在代码末尾有这个 cv2.waitKey(0) 语句。它可以防止图像在程序执行后自动关闭。如果程序在没有这条语句的情况下运行,修改后的图像将出现,然后立即关闭。

输出:

在 opencv cv2 python 中绘制矩形

如果我们将厚度值更改为 -1 会怎样?在这种情况下,矩形将具有填充颜色。相同的参考下面的代码。

import cv2
 
image_url = "full\\path\\to\\the\\image\\image.jpg" # Full path is needed
image = cv2.imread(image_url, cv2.COLOR_BGR2RGB)
start_point = (140, 140)
end_point = (500, 500)
color = (0, 255, 255)
thickness = -1
image_with_rectangle = cv2.rectangle(
    img = image,
    pt1 = start_point,
    pt2 = end_point, 
    color = color, 
    thickness = thickness
)
cv2.imshow("Image with a Rectangle", image_with_rectangle)
cv2.waitKey(0)

输出:

在 opencv cv2 python 中绘制矩形-将厚度设置为-1

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

LinkedIn GitHub

相关文章 - Python OpenCV