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