📅  最后修改于: 2023-12-03 15:27:34.179000             🧑  作者: Mango
在计算机视觉中,绘制边界是一种常见的技术。边界通常用于标记感兴趣的区域或对象。在这个项目中,我们将介绍如何用 Python 找到物体的边界并绘制出来。
这个项目需要使用 OpenCV 和 NumPy 库,请确保已经安装了这两个库。如果没有安装,可以使用以下命令进行安装:
pip install opencv-python numpy
首先,我们需要加载一张图像。我们将使用 OpenCV 的 imread()
函数来加载图像。在加载图像之前,请确保你已经将图像放在了当前工作目录中。
import cv2
import numpy as np
img = cv2.imread('image.jpg')
由于图像分析通常在灰度图像中进行更容易处理和有效,我们需将图像转换为灰度图像。为了将RGB图像转换为灰度图像,我们将使用OpenCV的 cvtColor()
函数。
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
接下来,我们需要找到图像中物体的轮廓边缘。我们将使用Canny函数执行边缘检测。
canny = cv2.Canny(gray, 100, 200)
参数threshold1
和threshold2
指定Canny算子的低和高阈值。
现在我们已经有了边缘,使用findContours函数来查找图像中所有的边界点
contours, hierarchy = cv2.findContours(canny,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
findContours()
返回的第一个参数是轮廓本身,而第二个参数是层次结构。
最后,我们使用drawContours()
函数绘制找到的轮廓。
cv2.drawContours(img, contours, -1, (0, 255, 0), 2)
第一个参数指定要绘制轮廓的图像;第二个参数是要绘制的轮廓;第三个参数是轮廓索引,如果是负数,则绘制所有的轮廓;颜色,这里我们使用 (0, 255, 0)
即绿色;线宽为2。
最后,我们使用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绘制图像的边界。