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 检查数组元素是否存在类似PHP isset()方法
Oct 14 Python
Python挑选文件夹里宽大于300图片的方法
Mar 05 Python
python执行等待程序直到第二天零点的方法
Apr 23 Python
部署Python的框架下的web app的详细教程
Apr 30 Python
Python3 Tkinter选择路径功能的实现方法
Jun 14 Python
python 计算平均平方误差(MSE)的实例
Jun 29 Python
Python的Tkinter点击按钮触发事件的例子
Jul 19 Python
python之pexpect实现自动交互的例子
Jul 25 Python
python保留小数位的三种实现方法
Jan 07 Python
Python unittest单元测试openpyxl实现过程解析
May 27 Python
用OpenCV进行年龄和性别检测的实现示例
Jan 29 Python
Python中基础数据类型 set集合知识点总结
Aug 02 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中改变图片的尺寸大小的代码
2011/07/17 PHP
php中存储用户ID和密码到mysql数据库的方法
2013/02/06 PHP
PHP错误Allowed memory size of 67108864 bytes exhausted的3种解决办法
2014/07/28 PHP
php验证手机号码
2015/11/11 PHP
php5.5使用PHPMailer-5.2发送邮件的完整步骤
2018/10/14 PHP
jquery.validate使用时遇到的问题
2015/05/25 Javascript
AngularJs $parse、$eval和$observe、$watch详解
2016/09/21 Javascript
AngularJS ng-repeat数组有重复值的解决方法
2016/10/23 Javascript
Bootstrap源码学习笔记之bootstrap进度条
2016/12/24 Javascript
使用contextMenu插件实现Bootstrap table弹出右键菜单
2017/02/20 Javascript
深入理解react-router 路由的实现原理
2018/09/26 Javascript
通过图带你深入了解vue的响应式原理
2019/06/21 Javascript
JavaScript onclick事件使用方法详解
2020/05/15 Javascript
八种Vue组件间通讯方式合集(推荐)
2020/08/18 Javascript
[02:52]DOTA2新手基础教程 米波
2014/01/21 DOTA
Python实现类继承实例
2014/07/04 Python
python中dir函数用法分析
2015/04/17 Python
python数组复制拷贝的实现方法
2015/06/09 Python
python动态加载包的方法小结
2016/04/18 Python
python使用str & repr转换字符串
2016/10/13 Python
python打包压缩、读取指定目录下的指定类型文件
2018/04/12 Python
Django项目实战之用户头像上传与访问的示例
2018/04/21 Python
Python+OpenCV感兴趣区域ROI提取方法
2019/01/10 Python
python 中不同包 类 方法 之间的调用详解
2020/03/09 Python
如何使用python切换hosts文件
2020/04/29 Python
浅谈如何使用python抓取网页中的动态数据实现
2020/08/17 Python
python实现excel公式格式化的示例代码
2020/12/23 Python
python+opencv实现车道线检测
2021/02/19 Python
CSS3 实现侧边栏展开收起动画
2014/12/22 HTML / CSS
CSS3实现的渐变幻灯片效果
2020/12/07 HTML / CSS
校园网站的创业计划书范文
2013/12/30 职场文书
自我评价格式
2014/01/06 职场文书
舞蹈专业大学生职业规划范文
2014/03/12 职场文书
销售简历自我评价怎么写
2014/09/26 职场文书
幼儿园体操比赛口号
2015/12/25 职场文书
vue如何使用模拟的json数据查看效果
2022/03/31 Vue.js