📜  cv2 绘制框 - Python (1)

📅  最后修改于: 2023-12-03 15:30:13.799000             🧑  作者: Mango

cv2 绘制框 - Python

cv2OpenCV 库的 Python 接口模块,提供了丰富而强大的图像处理工具。其中绘制框(矩形)是常用的图像处理之一。本篇文章将介绍如何使用 cv2 在图像中绘制矩形框。

绘制矩形框

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

  • img: 目标图像
  • pt1: 矩形框的左上角点坐标
  • pt2: 矩形框的右下角点坐标
  • color: 矩形框的颜色(B, G, R),例如:(255, 0, 0)表示蓝色
  • thickness: 线条粗细,默认为1
  • lineType: 线条类型,默认为cv2.LINE_8
  • shift: 坐标点小数位数,默认为0
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() 显示了图像。

以上代码的效果如下:

image

多个矩形框

如果需要在同一张图像上绘制多个矩形框,只需要多次调用 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个矩形框,相互之间没有任何覆盖。效果如下:

image

矩形框的位置和大小

如果需要根据目标位置和大小绘制矩形框,我们可以使用一个 bounding box(包围框)来表示。这个包围框通常是一个 (x, y, w, h) 的元组(或者列表),其中 (x, y) 表示矩形框的左上角点坐标,wh 分别表示宽和高。

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)wh 计算出矩形框的左上角坐标和右下角坐标,最后在图像上绘制出矩形框。

以上代码的效果如下:

image

结语

本篇文章介绍了 cv2 在图像中绘制矩形框的方法,包括单个矩形框绘制、多个矩形框绘制,以及如何根据位置和大小计算出矩形框的坐标。希望本篇文章对你有所帮助。