在 Python 中使用 OpenCV 模块绘制矩形
Vaibhav Vaibhav
2022年5月17日
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)
语句。它可以防止图像在程序执行后自动关闭。如果程序在没有这条语句的情况下运行,修改后的图像将出现,然后立即关闭。
输出:
如果我们将厚度值更改为 -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)
输出:
Author: Vaibhav Vaibhav