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实现查询IP地址所在地
Mar 29 Python
Python的SQLalchemy模块连接与操作MySQL的基础示例
Jul 11 Python
PyQt5利用QPainter绘制各种图形的实例
Oct 19 Python
Python编程argparse入门浅析
Feb 07 Python
python如何实现内容写在图片上
Mar 23 Python
解决python写入带有中文的字符到文件错误的问题
Jan 31 Python
python正则爬取某段子网站前20页段子(request库)过程解析
Aug 10 Python
关于PyTorch 自动求导机制详解
Aug 18 Python
Python 限定函数参数的类型及默认值方式
Dec 24 Python
python 图像的离散傅立叶变换实例
Jan 02 Python
PyTorch实现ResNet50、ResNet101和ResNet152示例
Jan 14 Python
Python正则表达式中flags参数的实例详解
Apr 01 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
php 多线程上下文中安全写文件实现代码
2009/12/28 PHP
基于php验证码函数的使用示例
2013/05/03 PHP
微信JSSDK分享功能图文实例详解
2019/04/08 PHP
预加载css或javascript的js代码
2010/04/23 Javascript
formStorage 基于jquery的一个插件(存储表单中元素的状态到本地)
2012/01/20 Javascript
SOSO地图JS画出标注和中心点以html形式运行
2013/08/09 Javascript
JS实现点击按钮自动增加一个单元格的方法
2015/03/09 Javascript
JavaScript让Textarea支持tab按键的方法
2015/06/26 Javascript
12种JavaScript常用的MVC框架比较分析
2015/11/16 Javascript
基于jQuery仿淘宝产品图片放大镜特效
2020/10/19 Javascript
详解nuxt sass全局变量(公共scss解决方案)
2018/06/27 Javascript
Node.js + express基本用法教程
2019/03/14 Javascript
node.js监听文件变化的实现方法
2019/04/17 Javascript
Vue 解决父组件跳转子路由后当前导航active样式消失问题
2020/07/21 Javascript
JS sort排序详细使用方法示例解析
2020/09/27 Javascript
Python 遍历列表里面序号和值的方法(三种)
2017/02/17 Python
Python解决线性代数问题之矩阵的初等变换方法
2018/12/12 Python
详解如何设置Python环境变量?
2019/05/13 Python
python实现视频分帧效果
2019/05/31 Python
python实现遍历文件夹图片并重命名
2020/03/23 Python
TensorFlow2.1.0安装过程中setuptools、wrapt等相关错误指南
2020/04/08 Python
MANGO官方网站:西班牙芒果服装品牌
2017/01/15 全球购物
Tahari ASL官方网站:高级设计师女装
2021/03/15 全球购物
文员个人的求职信范文
2013/09/26 职场文书
采购主管的岗位职责
2013/12/17 职场文书
给朋友的道歉信
2014/01/09 职场文书
全神贯注教学反思
2014/02/03 职场文书
创业计划实施的7大步骤
2014/02/05 职场文书
村居抓节水倡议书
2014/05/19 职场文书
个人欠款担保书
2014/05/20 职场文书
新闻传播专业求职信
2014/07/22 职场文书
学生逃课检讨书1000字
2014/10/20 职场文书
上课讲话检讨书范文
2015/05/07 职场文书
学雷锋广播稿大全
2015/08/19 职场文书
男方家长婚礼答谢词
2015/09/29 职场文书
tensorflow学习笔记之tfrecord文件的生成与读取
2021/03/31 Python