📜  使用 OpenCV 查找轮廓坐标 | Python(1)

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

使用 OpenCV 查找轮廓坐标 | Python

在计算机视觉领域中,图像轮廓是非常重要的概念之一。轮廓可以被看作是图像的边界,它可以帮助我们检测物体、进行图像分割和形状分析等。在 Python 中,我们可以使用 OpenCV 库来查找图像的轮廓坐标。下面就是一份实现示例:

实现步骤
  1. 导入必要的库:
import cv2
import numpy as np
  1. 读取图像并灰度化:
img = cv2.imread('example.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
  1. 进行图像的阈值处理:
ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
  1. 查找轮廓:
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
  1. 绘制轮廓并显示图像:
cv2.drawContours(img, contours, -1, (0, 0, 255), 2)
cv2.imshow('Contours', img)
cv2.waitKey(0)
解释说明

以上代码中,我们通过以下步骤实现了轮廓的查找:

  1. 导入必要的库;
  2. 读取图像并将其转换为灰度图像;
  3. 对灰度图像进行阈值处理,得到一个二值图像;
  4. 使用 cv2.findContours 函数查找轮廓,返回轮廓的坐标;
  5. 使用 cv2.drawContours 函数绘制轮廓并显示图像。

需要注意的是,cv2.findContours 函数的三个参数分别是:

  • image:输入的二值图像;
  • mode:轮廓提取模式;
  • method:轮廓近似方法。

在上面的代码中,我们使用 cv2.RETR_TREEcv2.CHAIN_APPROX_SIMPLE 作为参数。其中,cv2.RETR_TREE 表示提取所有轮廓并建立轮廓之间的层次结构;cv2.CHAIN_APPROX_SIMPLE 表示压缩水平、垂直和对角线方向上的所有轮廓点,使轮廓点更少,从而更容易处理。

另外,cv2.drawContours 函数的四个参数分别是:

  • image:需要绘制轮廓的图像;
  • contours:要绘制的轮廓;
  • contourIdx:轮廓的索引;
  • color:轮廓的颜色;
  • thickness:轮廓的线条宽度。
总结

以上就是使用 OpenCV 查找轮廓坐标的 Python 实现示例。轮廓坐标的查找是计算机视觉中重要的基础操作,也是进行目标检测、图像分割等任务的基础。希望这份示例代码能够帮助你更好地理解和运用这个概念。