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列出目录下指定文件与子目录的方法
Jul 03 Python
Django查找网站项目根目录和对正则表达式的支持
Jul 15 Python
详解Django中的ifequal和ifnotequal标签使用
Jul 16 Python
Python+Turtle动态绘制一棵树实例分享
Jan 16 Python
Windows下的Python 3.6.1的下载与安装图文详解(适合32位和64位)
Feb 21 Python
使用pandas读取csv文件的指定列方法
Apr 21 Python
使用Django启动命令行及执行脚本的方法
May 29 Python
python设计微型小说网站(基于Django+Bootstrap框架)
Jul 08 Python
利用Python库Scapy解析pcap文件的方法
Jul 23 Python
在python中用url_for构造URL的方法
Jul 25 Python
Django认证系统实现的web页面实现代码
Aug 12 Python
Python3+Requests+Excel完整接口自动化测试框架的实现
Oct 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语法(5)
2006/10/09 PHP
php 各种应用乱码问题的解决方法
2010/05/09 PHP
微盾PHP脚本加密专家php解密算法
2020/09/13 PHP
php 文件上传实例代码
2012/04/19 PHP
PHP生成迅雷、快车、旋风等软件的下载链接代码实例
2014/05/12 PHP
浅谈json_encode用法
2015/03/05 PHP
怎样搭建PHP开发环境
2015/07/28 PHP
大家都应该掌握的PHP关联数组使用技巧
2015/12/25 PHP
PHP实现多级分类生成树的方法示例
2017/02/07 PHP
PHP实现的超长文本分页显示功能示例
2018/06/04 PHP
关于PHP中interface的用处详解
2020/07/26 PHP
javascript 跳转代码集合
2009/12/03 Javascript
深入分析Javascript跨域问题
2015/04/17 Javascript
JavaScript实现仿网易通行证表单验证
2015/05/25 Javascript
jQuery实现鼠标点击弹出渐变层的方法
2015/07/09 Javascript
总结JavaScript中布尔操作符||与&&的使用技巧
2015/11/17 Javascript
浅析angularJS中的ui-router和ng-grid模块
2016/05/20 Javascript
JavaScript高仿支付宝倒计时页面及代码实现
2016/10/21 Javascript
微信小程序实现移动端滑动分页效果(ajax)
2017/06/13 Javascript
解决layui批量传值到后台操作时出现传值为空的问题
2019/09/28 Javascript
Jquery cookie插件实现原理代码解析
2020/08/04 jQuery
[02:30]DOTA2英雄基础教程 暗影恶魔
2013/12/17 DOTA
动感网页相册 python编写简单文件夹内图片浏览工具
2016/08/17 Python
Python实现爬取百度贴吧帖子所有楼层图片的爬虫示例
2018/04/26 Python
python执行系统命令后获取返回值的几种方式集合
2018/05/12 Python
Python虚拟环境的原理及使用详解
2019/07/02 Python
没编程基础可以学python吗
2020/06/17 Python
Python 制作查询商品历史价格的小工具
2020/10/20 Python
Beach Bunny Swimwear官网:设计师泳装和性感比基尼
2019/03/13 全球购物
西班牙香水和化妆品连锁店:Druni
2019/05/05 全球购物
查摆剖析材料范文
2014/09/30 职场文书
入党介绍人意见怎么写
2015/06/03 职场文书
幼儿园教师管理制度
2015/08/05 职场文书
关于公司年会的开幕词
2016/03/04 职场文书
Python 键盘事件详解
2021/11/11 Python
mysql拆分字符串作为查询条件的示例代码
2022/07/07 MySQL