基于OpenCV的简单边缘检测模型

2020-12-07 10:55:25 浏览数 (1)

本期我们一起看看如何进行图像边缘的检测。边缘检测通常用于理解图像中的对象,帮助机器做出更好的预测。编写边缘检测程序是了解机器如何看待外界的好方法。现在就让我们使用python进行边缘检测吧。

我们将为该项目使用两个主要模块:Numpy,Matplotlib和OpenCV。Matplotlib是一个完整的库,用于在Python中生成静态,动画和交互式可视化。OpenCV是一个高度优化的库,专注于实时应用程序。

OpenCV

OpenCV(开源计算机视觉库)是一个开源计算机视觉和机器学习软件库。OpenCV的构建旨在为计算机视觉应用程序提供通用的基础结构,并加速商业产品中的机器感知。作为BSD许可的产品,OpenCV使企业可以轻松地使用和修改代码。

参考:https : //opencv.org

让我们从安装库开始。

安装库

我们必须安装库,以便我们的程序正常运行。如前所述,我们将只需要两个库。使用PIP库管理器将它们安装在一行中:

pip安装numpy matplotlib opencv-python

安装过程完成后,我们可以将它们导入到我们的代码中。我们将使用Atom文本编辑器完成。

导入cv2 导入numpy作为np 导入matplotlib.pyplot作为plt

边缘检测功能

现在,我们可以转到有趣的部分,在这里我们将编写边缘检测功能。您会惊讶于使用OpenCV软件包如此简单。此OpenCV检测模型也称为Canny边缘检测模型。我们的功能包括三个部分:边缘检测,可视化,最后保存结果。

边缘检测

def simple_edge_detection(image): edgesdetected = cv2.Canny(image,100,200) images = [image,edgesdetected]

了解代码:

  1. Canny是我们调用的使用OpenCV进行边缘检测的方法。
  2. Image是函数的参数,这意味着我们将在调用函数时传递图像。这样,您可以轻松地用不同的图像测试程序。
  3. 100和200是磁滞阈值的最小值和最大值。

可视化

location = [121,122] 对于loc,zip中的edge_image(位置,图片): plt.subplot(loc) plt.imshow(edge_image,cmap ='gray')

了解代码:

  1. 绘图部分需要位置数组。
  2. 然后,我们同时可视化原始图像和边缘检测图像。
  3. cmap参数用于更改图像的颜色。就我们而言,我们正在将它们转换为灰色。

保存结果

该功能的最后一部分将保存边缘检测图像和比较图。OpenCv和Matplotlib软件包;imwritesavefig函数都为我们提供了这个功能。在最后一行中,show函数可以向我们显示创建的图。

cv2.imwrite('edge_detected.png',edgesdetected)plt.savefig('edge_plot.png')plt.show()

选择图片

我们要找到一张测试Canny Edge检测程序的图像。下载图像后,请确保将它们放入与项目相同的文件夹中。这将有助于轻松地将它们导入程序。让我们定义一个图像变量并导入图像。这是使用OpenCV读取图像的方法:

img = cv2.imread('test_image.jpg',0)

这是我将测试模型的示例图像:

运行程序

是时候运行程序了。到目前为止,没有任何东西可以触发该功能。我们必须调用函数也不要忘记将图像作为参数传递进去:

simple_edge_detection(img)

结果如下:

我们已经使用Python创建了边缘检测的代码。

0 人点赞