python opencv实现图像边缘检测


Posted in Python onApril 29, 2019

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

1、去噪

如cv2.GaussianBlur()等函数;

2、计算图像梯度

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

python opencv实现图像边缘检测

3、非极大值抑制

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

python opencv实现图像边缘检测

4、滞后阈值

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

python opencv实现图像边缘检测

在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 opencv实现图像边缘检测

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

Python 相关文章推荐
python的迭代器与生成器实例详解
Jul 16 Python
python采用django框架实现支付宝即时到帐接口
May 17 Python
Python入门教程之运算符与控制流
Aug 17 Python
Python+Pandas 获取数据库并加入DataFrame的实例
Jul 25 Python
python将一组数分成每3个一组的实例
Nov 14 Python
python实现爬取百度图片的方法示例
Jul 06 Python
tensorflow没有output结点,存储成pb文件的例子
Jan 04 Python
python计算二维矩形IOU实例
Jan 18 Python
python使用hdfs3模块对hdfs进行操作详解
Jun 06 Python
基于Python的自媒体小助手---登录页面的实现代码
Jun 29 Python
python Paramiko使用示例
Sep 21 Python
Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)
Feb 22 Python
Python Django给admin添加Action的方法实例详解
Apr 29 #Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
Apr 29 #Python
Python opencv实现人眼/人脸识别以及实时打码处理
Apr 29 #Python
python实现微信每日一句自动发送给喜欢的人
Apr 29 #Python
详解【python】str与json类型转换
Apr 29 #Python
python实现给微信指定好友定时发送消息
Apr 29 #Python
python使用wxpy实现微信消息防撤回脚本
Apr 29 #Python
You might like
虫族 Zerg 魔法科技
2020/03/14 星际争霸
php FPDF类库应用实现代码
2009/03/20 PHP
php中jQuery插件autocomplate的简单使用笔记
2012/06/14 PHP
淘宝ip地址查询类分享(利用淘宝ip库)
2014/01/07 PHP
PHP实现带重试功能的curl连接示例
2016/07/28 PHP
PHP实现笛卡尔积算法的实例讲解
2019/12/22 PHP
js鼠标左右键 键盘值小结
2010/06/11 Javascript
javascript如何动态加载表格与动态添加表格行
2013/11/27 Javascript
JavaScript删除指定子元素代码实例
2015/01/13 Javascript
jQuery+Ajax实现无刷新分页
2015/10/30 Javascript
浅析js中substring和substr的方法
2015/11/09 Javascript
js防阻塞加载的实现方法
2016/09/09 Javascript
jquery中用jsonp实现搜索框功能
2016/10/18 Javascript
JS中跨页面调用变量和函数的方法(例如a.js 和 b.js中互相调用)
2016/11/01 Javascript
jQuery常见的选择器及用法介绍
2016/12/20 Javascript
Angular2 父子组件通信方式的示例
2018/01/29 Javascript
Javascript的console['']常用输入方法汇总
2018/04/26 Javascript
python实现定时同步本机与北京时间的方法
2015/03/24 Python
在Django的URLconf中使用多个视图前缀的方法
2015/07/18 Python
Python编程判断一个正整数是否为素数的方法
2017/04/14 Python
Python实现1-9数组形成的结果为100的所有运算式的示例
2017/11/03 Python
PYTHON如何读取和写入EXCEL里面的数据
2019/10/28 Python
python将logging模块封装成单独模块并实现动态切换Level方式
2020/05/12 Python
CSS中几个与换行有关的属性简明总结
2014/04/15 HTML / CSS
美国饼干礼物和美食甜点购买网站:Cheryl’s
2020/05/28 全球购物
Araks官网:纽约内衣品牌
2020/10/15 全球购物
杭州龙健科技笔试题.net部分笔试题
2016/01/24 面试题
实习生个人的自我评价
2013/12/08 职场文书
社区庆八一活动方案
2014/02/02 职场文书
党建工作经验交流材料
2014/05/25 职场文书
助学贷款贫困证明
2014/09/23 职场文书
收银员岗位职责范本
2015/04/07 职场文书
2016抗战胜利71周年红领巾广播稿
2015/12/18 职场文书
详解Python类和对象内容
2021/06/22 Python
React如何创建组件
2021/06/27 Javascript
win10如何更改appdata文件夹的默认位置?
2022/07/15 数码科技