Python OpenCV:外接矩形中心点

简介

OpenCV是一个开源的计算机视觉库,提供了各种图像处理和计算机视觉的函数和工具。在图像处理中,经常需要找到物体或图像的外接矩形,并计算出其中心点坐标。本文将介绍如何使用Python和OpenCV来找到外接矩形的中心点。

准备工作

在开始之前,需要先安装OpenCV库。可以使用pip命令来安装:

$ pip install opencv-python

导入库

首先,在Python脚本中导入OpenCV库和NumPy库:

import cv2
import numpy as np

读取图像

接下来,我们需要读取一张图像。可以使用cv2.imread()函数来读取图像,该函数接受图像文件的路径作为输入,并返回一个包含图像数据的NumPy数组:

image = cv2.imread('image.jpg')

注意,需要将image.jpg替换为你自己的图像文件路径。

图像处理

为了找到外接矩形的中心点,需要对图像进行一些处理。首先,将图像转换为灰度图像,可以使用cv2.cvtColor()函数将图像从BGR格式转换为灰度格式:

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

然后,对灰度图像进行二值化处理,将图像转换为黑白两种颜色。可以使用cv2.threshold()函数来实现:

_, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)

外接矩形

接下来,使用cv2.findContours()函数找到图像中的所有轮廓。该函数接受二值化图像和一些参数,并返回一个包含轮廓信息的列表:

contours, _ = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

然后,遍历所有轮廓,并使用cv2.boundingRect()函数找到每个轮廓的外接矩形:

for contour in contours:
    x, y, w, h = cv2.boundingRect(contour)
    cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)

cv2.boundingRect()函数返回外接矩形的左上角坐标和宽度、高度。

计算中心点

最后,根据外接矩形的左上角坐标和宽度、高度,可以计算出外接矩形的中心点坐标:

center_x = x + w/2
center_y = y + h/2
cv2.circle(image, (int(center_x), int(center_y)), 5, (0, 0, 255), -1)

在这里,使用cv2.circle()函数在图像中画一个小圆来表示中心点,方便显示和观察。

显示结果

最后,使用cv2.imshow()函数显示处理后的图像,并使用cv2.waitKey()函数等待用户按下任意键关闭窗口:

cv2.imshow('Result', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

完整代码示例

import cv2
import numpy as np

image = cv2.imread('image.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
_, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
contours, _ = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

for contour in contours:
    x, y, w, h = cv2.boundingRect(contour)
    cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)
    center_x = x + w/2
    center_y = y + h/2
    cv2.circle(image, (int(center_x), int(center_y)), 5, (0, 0, 255), -1)

cv2.imshow('Result', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

总结

本文介绍了如何使用Python和Open