OpenCV 图像梯度的实现方法


Posted in Python onJuly 25, 2021

概述

OpenCV 是一个跨平台的计算机视觉库, 支持多语言, 功能强大. 今天小白就带大家一起携手走进 OpenCV 的世界.

梯度运算

梯度: 膨胀 (Dilating) - 腐蚀 (Eroding).

例子:

# 读取图片
pie = cv2.imread("pie.png")

# 核
kernel = np.ones((7, 7), np.uint8)

# 计算梯度
gradient = cv2.morphologyEx(pie, cv2.MORPH_GRADIENT, kernel=kernel)

# 图片展示
cv2.imshow("gradient", gradient)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出结果:

OpenCV 图像梯度的实现方法

礼帽

礼帽 (Top Hat): 原始输入 - 开运算结果.

例子:

# 读取图片
img = cv2.imread("white.png")

# 核
kernel = np.ones((7, 7), np.uint8)

# 礼帽
tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel=kernel)

# 图片展示
cv2.imshow("tophat", tophat)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出结果:

OpenCV 图像梯度的实现方法

黑帽

黑帽 (Black Hat): 闭运算 - 原始输入.

例子:

# 读取图片
img = cv2.imread("white.png")

# 核
kernel = np.ones((7, 7), np.uint8)

# 礼帽
blackhat = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel=kernel)

# 图片展示
cv2.imshow("blackhat", blackhat)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出结果:

OpenCV 图像梯度的实现方法

Sobel 算子

Sobel 算子 (Sobeloperator) 是边缘检测中非常重要的一个算子. Sobel 算子是一类离散性差分算子, 用来运算图像高亮度函数的灰度之近似值.

格式:

cv2.Sobel(src, ddepth, dx, dy, ksize)

参数:

  • src: 原图
  • ddepth: 图片深度
  • dx: 水平方向
  • dy: 竖直方向
  • ksize: 算子大小

计算 x

代码:

# 读取图片
img = cv2.imread("pie.png")

# Sobel算子
sobelx = cv2.Sobel(img, -1, 1, 0, ksize=3)

# 展示图片
cv2.imshow("sobelx", sobelx)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出结果:

OpenCV 图像梯度的实现方法

计算 y

代码:

# 读取图片
img = cv2.imread("pie.png")

# Sobel算子
sobely = cv2.Sobel(img, -1, 0, 1, ksize=3)

# 展示图片
cv2.imshow("sobely", sobely)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出结果:

OpenCV 图像梯度的实现方法

计算 x+y

代码:

# 读取图片
img = cv2.imread("pie.png")

# Sobel算子
sobel = cv2.Sobel(img, -1, 1, 1, ksize=3)

# 展示图片
cv2.imshow("sobel", sobel)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出结果:

OpenCV 图像梯度的实现方法

融合

代码:

# Sobel算子
sobelx = cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=3)
sobely = cv2.Sobel(img, cv2.CV_64F, 0, 1, ksize=3)

# 转换成绝对值
sobelx = cv2.convertScaleAbs(sobelx)
sobely = cv2.convertScaleAbs(sobely)

# 融合
sobel_xy = cv2.addWeighted(sobelx, 0.5, sobely, 0.5, 0)

# 展示图片
cv2.imshow("sobel_xy", sobel_xy)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出结果:

OpenCV 图像梯度的实现方法

注: 当 ddepth 设置为 -1, 即与原图保持一致, 得到的结果可能是错误的. 计算梯度值可能出现负数, 负数会自动截断为 0. 为了避免信息丢失, 我们需要使用更高是数据类型 cv2.CV_64F, 再通过取绝对值将其映射到 cv2.CV_8U 类型.

到此这篇关于OpenCV 图像梯度的实现方法的文章就介绍到这了,更多相关OpenCV 图像梯度内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python计算程序运行时间的方法
Dec 13 Python
Python获取任意xml节点值的方法
May 05 Python
Python实现数据库编程方法详解
Jun 09 Python
python查找指定文件夹下所有文件并按修改时间倒序排列的方法
Oct 21 Python
Python中的集合介绍
Jan 28 Python
Python 堆叠柱状图绘制方法
Jul 29 Python
Python pandas实现excel工作表合并功能详解
Aug 29 Python
Python sklearn库实现PCA教程(以鸢尾花分类为例)
Feb 24 Python
Python Django中间件使用原理及流程分析
Jun 13 Python
Python判断变量是否是None写法代码实例
Oct 09 Python
用Python将GIF动图分解成多张静态图片
Jun 11 Python
Python进程间的通信之语法学习
Apr 11 Python
ROS系统将python包编译为可执行文件的简单步骤
Jul 25 #Python
Pandas自定义选项option设置
Jul 25 #Python
Pandas 稀疏数据结构的实现
Jul 25 #Python
Python中rapidjson参数校验实现
Jul 25 #Python
理解python中装饰器的作用
Jul 21 #Python
opencv检测动态物体的实现
Python爬虫中urllib3与urllib的区别是什么
You might like
PHP Header用于页面跳转要注意的几个问题总结
2008/10/03 PHP
PHP5中使用PDO连接数据库的方法
2010/08/01 PHP
网页前台通过js非法字符过滤代码(骂人的话等等)
2010/05/26 Javascript
JQuery 自定义CircleAnimation,Animate方法学习笔记
2011/07/10 Javascript
html超链接打开窗口大小的方法
2013/03/05 Javascript
Extjs4中Form的使用之本地hiddenfield
2013/11/26 Javascript
jQuery实现Meizu魅族官方网站的导航菜单效果
2015/09/14 Javascript
JavaScript编码风格指南(中文版)
2016/08/26 Javascript
JS验证 只能输入小数点,数字,负数的实现方法
2016/10/07 Javascript
vue+vuex+axio从后台获取数据存入vuex实现组件之间共享数据
2017/04/22 Javascript
js 监控iframe URL的变化实例代码
2017/07/12 Javascript
基于ES6 Array.of的用法(实例讲解)
2017/09/05 Javascript
[44:50]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 TNC vs VG
2018/04/02 DOTA
详解在Python的Django框架中创建模板库的方法
2015/07/20 Python
Python实现生成随机日期字符串的方法示例
2017/12/25 Python
python 字典中文key处理,读取,比较方法
2018/07/06 Python
详解如何用TensorFlow训练和识别/分类自定义图片
2019/08/05 Python
python实现多进程通信实例分析
2019/09/01 Python
利用Python产生加密表和解密表的实现方法
2019/10/15 Python
使用python实现回文数的四种方法小结
2019/11/24 Python
Python基于class()实现面向对象原理详解
2020/03/26 Python
Python Selenium自动化获取页面信息的方法
2020/08/31 Python
Python 实现PS滤镜中的径向模糊特效
2020/12/03 Python
python 使用openpyxl读取excel数据
2021/02/18 Python
工业设计专业推荐信
2013/10/29 职场文书
母婴店促销方案
2014/03/05 职场文书
快餐公司创业计划书
2014/04/29 职场文书
法人授权委托书样本
2014/09/19 职场文书
2014年物资管理工作总结
2014/12/02 职场文书
2015出纳试用期工作总结
2014/12/12 职场文书
2015年敬老月活动总结
2015/03/27 职场文书
不同意离婚代理词
2015/05/23 职场文书
入党积极分子考察意见
2015/06/02 职场文书
JS监听Esc 键触发事键
2021/04/14 Javascript
Django rest framework如何自定义用户表
2021/06/09 Python
纯html+css实现奥运五环的示例代码
2021/08/02 HTML / CSS