canny边缘检测算法 opencv_基于OpenCV的简单边缘检测模型

点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达b5313589deb0ecc1d516e20822719a7c.png

3420f4a6a7dfad2f209e17535da39ae3.png

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

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

535a9f774171832669e043b95664f433.png

运行程序

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

simple_edge_detection(img)

结果如下:

dd85e9c60e965f60dbf7b6c1da95827c.png75590010b4b946820d5726674b85d2f2.pngfb2546685248cdd6f17773c88f5f66b3.png我们已经使用Python创建了边缘检测的代码。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

43e4698f6cff59a7313a70654753f655.png

401085efa678913f9618fbf539f486f7.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值