本文利用python opencv进行图像的边缘检测,一般要经过如下几个步骤:

1、去噪

如cv2.GaussianBlur()等函数;

2、计算图像梯度

图像梯度表达的是各个像素点之间,像素值大小的变化幅度大小,变化较大,则可以认为是出于边缘位置,最多可简化为如下形式:

3、非极大值抑制

在获得梯度的方向和大小之后,应该对整幅图像做一个扫描,去除那些非边界上的点。对每一个像素进行检查,看这个点的梯度是不是周围具有相同梯度方向的点中最大的。如下图所示:

4、滞后阈值

现在要确定那些边界才是真正的边界。这时我们需要设置两个阈值:minVal 和maxVal。当图像的灰度梯度高于maxVal 时被认为是真的边界,那些低于minVal 的边界会被抛弃。如果介于两者之间的话,就要看这个点是否与某个被确定为真正的边界点相连,如果是就认为它也是边界点,如果不是就抛弃。如下图:

在Python Opencv接口中,提供了Canny函数,可以对图像进行一键执行边缘检测。

接下来,利用Canny函数进行边缘检测的实验。

Canny函数需要指定几个参数:

1、需要进行边缘检测的原图

2、阈值下限

3、阈值上限

我们为了能够看到不同阈值范围对边缘检测结果的影响,设置了两个滑动条,来分别表示阈值上下限。

完整代码如下:

# -*- coding: utf-8 -*-

"""

Created on Thu Sep 13 14:23:32 2018

@author: Leon

内容:

对图片进行边缘检测;

添加滑动条,可自由调整阈值上下限。

"""

import cv2

import numpy as np

def nothing(x):

pass

cv2.namedWindow('Canny',0)

# 创建滑动条

cv2.createTrackbar('minval','Canny',0,255,nothing)

cv2.createTrackbar('maxval','Canny',0,255,nothing)

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

# 高斯滤波去噪

img = cv2.GaussianBlur(img,(3,3),0)

edges =img

k=0

while(1):

key = cv2.waitKey(50) & 0xFF

if key == ord('q'):

break

# 读取滑动条数值

minval = cv2.getTrackbarPos('minval','Canny')

maxval = cv2.getTrackbarPos('maxval','Canny')

edges = cv2.Canny(img,minval,maxval)

# 拼接原图与边缘监测结果图

img_2 = np.hstack((img,edges))

cv2.imshow('Canny',img_2)

cv2.destroyAllWindows()

效果如图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

python图像边缘检测_python opencv实现图像边缘检测相关推荐

  1. python全景图像拼接_Python+OpenCV实现图像的全景拼接

    本文实例为大家分享了Python+OpenCV实现图像的全景拼接的具体代码,供大家参考,具体内容如下 环境:python3.5.2 + openCV3.4 1.算法目的 将两张相同场景的场景图片进行全 ...

  2. python 拉普拉斯锐化_Python+OpenCV拉普拉斯图像锐化

    **Python实现基于OpenCV的拉普拉斯图像锐化** 研一学习数字图像处理(刚萨雷斯版),导师让我用 Python 编写基于拉普拉斯算子的图像锐化,并且是在不直接调用OpenCV的情况下,由于现 ...

  3. python 高斯金字塔_Python OpenCV 之图像金字塔,高斯金字塔与拉普拉斯金字塔

    Python OpenCV 365 天学习计划,与橡皮擦一起进入图像领域吧. 基础知识铺垫 学习图像金字塔,发现网上的资料比较多,检索起来比较轻松. 图像金字塔是一张图像多尺度的表达,或者可以理解成一 ...

  4. python 视觉技术_python+opencv实现机器视觉基础技术(边缘提取,图像滤波,边缘检测算子,投影,车牌字符分割)...

    机器视觉是人工智能正在快速发展的一个分支.简单说来,机器视觉就是用机器代替人眼来做测量和判断.它是一项综合技术,包括图像处理.机械工程技术.控制.电光源照明.光学成像.传感器.模拟与数字视频技术.计算 ...

  5. python opencv 读取图片_Python opencv 读取图像

    对于 matlab 起家做数字图像处理的人来讲都非常适应matlab对图像处理的操作和思路,尤其是它可以非常方便直观的看到图像的RGB值. 由于最近在研究深度学习的计算机视觉方面的东西,于是完全自学接 ...

  6. python去除图像光照不均匀_python+opencv——去除图像光照不均匀

    使用python版本的opencv去除图像中的光照不均匀 在图像处理中,如果图像中存在光照不均匀,则会影响图像处理的效果,比如在图像文本识别和图像分割中.本博客对于图像均衡化的处理主要参考文章:一种基 ...

  7. python图片相似度计算_python Opencv计算图像相似度过程解析

    这篇文章主要介绍了python Opencv计算图像相似度过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.相关概念 一般我们人区分谁是谁 ...

  8. python图像融合算法_Python OpenCV 实现图像融合

    原标题:Python OpenCV 实现图像融合 来自:https://www.linuxmi.com/python-opencv-image-blending.html 在本文中,我们将讨论Pyth ...

  9. pythonopencv图像形态_Python+OpenCV图像处理之其他形态学操作

    顶帽(Top Hat): 原图像与开操作之间的差值图像,突出原图像中比周围亮的区域 黑帽(Black Hat): 闭操作图像与原图像的差值图像, 突出原图像中比周围暗的区域 形态学梯度(Gradien ...

最新文章

  1. map和foreach的区别和应用场景_浅析项目中常用的 VO、DTO、DO、PO的概念、区别和用处...
  2. POJ 2417 Discrete Logging 离散对数
  3. ALV OO的栏位属性
  4. linux系统生成的新文件是什么编码的,Linux系统的默认编码怎样设置?
  5. 计算机科学对个人而言最大的影响,论材料科学对计算机科学技术的深远影响.doc...
  6. 大数据学习笔记49:Flume Sinks(Flume接收器)
  7. (2)zynq FPGA AXI_Lite总线介绍
  8. C++ 手动实现简单的智能指针类
  9. Bailian4039 IP地址转换【进制】
  10. HDU 2089:不要62(数位DP)
  11. 实现C++与C的混合编程
  12. centos中service命令与/etc/init.d的关系以及centos7的变化
  13. 音频传输中的I2S协议
  14. 衣带渐宽终不悔为伊消得人憔悴,土蜂蜜科技终成正果
  15. 卡内基梅隆大学计算机专业系,卡内基梅隆大学计算机
  16. 警察心理素质测试的软件,2016招警考试心理素质测评常用试题
  17. iCCP: cHRM chunk does not match sRGB
  18. 重庆科技学院计算机考研资料汇总
  19. perl中bless的理解
  20. Web前端零基础入门——HTML5

热门文章

  1. Silverlight 游戏开发小技巧:轨迹跟随效果
  2. 企业部署Windows 7指南
  3. jquery 批量上下移动
  4. sdwan支持的网络设备类型
  5. QOS仍然很有价值-Vecloud
  6. CentOS系统代理配置
  7. Git清除本地账号密码/保存账号密码
  8. Citus中的分片策略:Append Distribution追加分配
  9. 871 最低加油次数
  10. python新手菜鸟之基础篇