python图像边缘检测_python opencv实现图像边缘检测
本文利用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实现图像边缘检测相关推荐
- python全景图像拼接_Python+OpenCV实现图像的全景拼接
本文实例为大家分享了Python+OpenCV实现图像的全景拼接的具体代码,供大家参考,具体内容如下 环境:python3.5.2 + openCV3.4 1.算法目的 将两张相同场景的场景图片进行全 ...
- python 拉普拉斯锐化_Python+OpenCV拉普拉斯图像锐化
**Python实现基于OpenCV的拉普拉斯图像锐化** 研一学习数字图像处理(刚萨雷斯版),导师让我用 Python 编写基于拉普拉斯算子的图像锐化,并且是在不直接调用OpenCV的情况下,由于现 ...
- python 高斯金字塔_Python OpenCV 之图像金字塔,高斯金字塔与拉普拉斯金字塔
Python OpenCV 365 天学习计划,与橡皮擦一起进入图像领域吧. 基础知识铺垫 学习图像金字塔,发现网上的资料比较多,检索起来比较轻松. 图像金字塔是一张图像多尺度的表达,或者可以理解成一 ...
- python 视觉技术_python+opencv实现机器视觉基础技术(边缘提取,图像滤波,边缘检测算子,投影,车牌字符分割)...
机器视觉是人工智能正在快速发展的一个分支.简单说来,机器视觉就是用机器代替人眼来做测量和判断.它是一项综合技术,包括图像处理.机械工程技术.控制.电光源照明.光学成像.传感器.模拟与数字视频技术.计算 ...
- python opencv 读取图片_Python opencv 读取图像
对于 matlab 起家做数字图像处理的人来讲都非常适应matlab对图像处理的操作和思路,尤其是它可以非常方便直观的看到图像的RGB值. 由于最近在研究深度学习的计算机视觉方面的东西,于是完全自学接 ...
- python去除图像光照不均匀_python+opencv——去除图像光照不均匀
使用python版本的opencv去除图像中的光照不均匀 在图像处理中,如果图像中存在光照不均匀,则会影响图像处理的效果,比如在图像文本识别和图像分割中.本博客对于图像均衡化的处理主要参考文章:一种基 ...
- python图片相似度计算_python Opencv计算图像相似度过程解析
这篇文章主要介绍了python Opencv计算图像相似度过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.相关概念 一般我们人区分谁是谁 ...
- python图像融合算法_Python OpenCV 实现图像融合
原标题:Python OpenCV 实现图像融合 来自:https://www.linuxmi.com/python-opencv-image-blending.html 在本文中,我们将讨论Pyth ...
- pythonopencv图像形态_Python+OpenCV图像处理之其他形态学操作
顶帽(Top Hat): 原图像与开操作之间的差值图像,突出原图像中比周围亮的区域 黑帽(Black Hat): 闭操作图像与原图像的差值图像, 突出原图像中比周围暗的区域 形态学梯度(Gradien ...
最新文章
- map和foreach的区别和应用场景_浅析项目中常用的 VO、DTO、DO、PO的概念、区别和用处...
- POJ 2417 Discrete Logging 离散对数
- ALV OO的栏位属性
- linux系统生成的新文件是什么编码的,Linux系统的默认编码怎样设置?
- 计算机科学对个人而言最大的影响,论材料科学对计算机科学技术的深远影响.doc...
- 大数据学习笔记49:Flume Sinks(Flume接收器)
- (2)zynq FPGA AXI_Lite总线介绍
- C++ 手动实现简单的智能指针类
- Bailian4039 IP地址转换【进制】
- HDU 2089:不要62(数位DP)
- 实现C++与C的混合编程
- centos中service命令与/etc/init.d的关系以及centos7的变化
- 音频传输中的I2S协议
- 衣带渐宽终不悔为伊消得人憔悴,土蜂蜜科技终成正果
- 卡内基梅隆大学计算机专业系,卡内基梅隆大学计算机
- 警察心理素质测试的软件,2016招警考试心理素质测评常用试题
- iCCP: cHRM chunk does not match sRGB
- 重庆科技学院计算机考研资料汇总
- perl中bless的理解
- Web前端零基础入门——HTML5