📅  最后修改于: 2023-12-03 15:30:13.799000             🧑  作者: Mango
cv2
是 OpenCV
库的 Python
接口模块,提供了丰富而强大的图像处理工具。其中绘制框(矩形)是常用的图像处理之一。本篇文章将介绍如何使用 cv2
在图像中绘制矩形框。
cv2.rectangle(img, pt1, pt2, color[, thickness[, lineType[, shift]]])
import cv2
# 加载图像
img = cv2.imread('path/to/image.jpg')
# 设置矩形框参数
pt1 = (50, 50)
pt2 = (100, 100)
color = (0, 255, 0) # 绿色
thickness = 2
# 在图像上绘制矩形框
cv2.rectangle(img, pt1, pt2, color, thickness)
# 显示图像
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
上述代码中,我们首先通过 cv2.imread()
加载了一张图像,然后设置了矩形框的参数。接着,通过 cv2.rectangle()
在图像上绘制了一个矩形框。最后,通过 cv2.imshow()
显示了图像。
以上代码的效果如下:
如果需要在同一张图像上绘制多个矩形框,只需要多次调用 cv2.rectangle()
即可。
import cv2
# 加载图像
img = cv2.imread('path/to/image.jpg')
# 绘制多个矩形框
cv2.rectangle(img, (50, 50), (100, 100), (255, 0, 0), 2)
cv2.rectangle(img, (150, 150), (200, 200), (0, 255, 0), 2)
cv2.rectangle(img, (250, 250), (300, 300), (0, 0, 255), 2)
# 显示图像
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
上述代码中,我们同时在图像上绘制了3个矩形框,相互之间没有任何覆盖。效果如下:
如果需要根据目标位置和大小绘制矩形框,我们可以使用一个 bounding box
(包围框)来表示。这个包围框通常是一个 (x, y, w, h)
的元组(或者列表),其中 (x, y)
表示矩形框的左上角点坐标,w
和 h
分别表示宽和高。
import cv2
# 加载图像
img = cv2.imread('path/to/image.jpg')
# 定义包围框
bbox = (50, 50, 50, 50)
# 获取矩形框的右下角点坐标
pt1 = (bbox[0], bbox[1])
pt2 = (bbox[0] + bbox[2], bbox[1] + bbox[3])
# 在图像上绘制矩形框
cv2.rectangle(img, pt1, pt2, (255, 0, 0), 2)
# 显示图像
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
上述代码中我们定义了一个包围框 (50, 50, 50, 50)
表示一个左上角点坐标为 (50, 50)
,宽和高均为 50
的矩形框。然后通过 (x, y)
,w
和 h
计算出矩形框的左上角坐标和右下角坐标,最后在图像上绘制出矩形框。
以上代码的效果如下:
本篇文章介绍了 cv2
在图像中绘制矩形框的方法,包括单个矩形框绘制、多个矩形框绘制,以及如何根据位置和大小计算出矩形框的坐标。希望本篇文章对你有所帮助。