📜  绘制边界python(1)

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

绘制边界 Python

在计算机视觉中,绘制边界是一种常见的技术。边界通常用于标记感兴趣的区域或对象。在这个项目中,我们将介绍如何用 Python 找到物体的边界并绘制出来。

步骤1 - 安装必要的库

这个项目需要使用 OpenCV 和 NumPy 库,请确保已经安装了这两个库。如果没有安装,可以使用以下命令进行安装:

pip install opencv-python numpy
步骤2 - 加载图像

首先,我们需要加载一张图像。我们将使用 OpenCV 的 imread() 函数来加载图像。在加载图像之前,请确保你已经将图像放在了当前工作目录中。

import cv2
import numpy as np

img = cv2.imread('image.jpg')
步骤3 - 将图像转换为灰度图像

由于图像分析通常在灰度图像中进行更容易处理和有效,我们需将图像转换为灰度图像。为了将RGB图像转换为灰度图像,我们将使用OpenCV的 cvtColor()函数。

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
步骤4 - 边缘检测

接下来,我们需要找到图像中物体的轮廓边缘。我们将使用Canny函数执行边缘检测。

canny = cv2.Canny(gray, 100, 200)

参数threshold1threshold2指定Canny算子的低和高阈值。

步骤5 - 边界检测

现在我们已经有了边缘,使用findContours函数来查找图像中所有的边界点

contours, hierarchy  = cv2.findContours(canny,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)

findContours()返回的第一个参数是轮廓本身,而第二个参数是层次结构。

步骤6 - 绘制边界

最后,我们使用drawContours()函数绘制找到的轮廓。

cv2.drawContours(img, contours, -1, (0, 255, 0), 2)

第一个参数指定要绘制轮廓的图像;第二个参数是要绘制的轮廓;第三个参数是轮廓索引,如果是负数,则绘制所有的轮廓;颜色,这里我们使用 (0, 255, 0) 即绿色;线宽为2。

步骤7 - 显示图像

最后,我们使用imshow()函数来显示图像。

cv2.imshow("Image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
最终代码
import cv2
import numpy as np

img = cv2.imread('image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
canny = cv2.Canny(gray, 100, 200)
contours, hierarchy  = cv2.findContours(canny,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(img, contours, -1, (0, 255, 0), 2)
cv2.imshow("Image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

现在你已经掌握了如何通过Python绘制图像的边界。