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 相关文章推荐
在树莓派2或树莓派B+上安装Python和OpenCV的教程
Mar 30 Python
使用Python的Flask框架实现视频的流媒体传输
Mar 31 Python
Python中Django框架下的staticfiles使用简介
May 30 Python
用Python的Django框架来制作一个RSS阅读器
Jul 22 Python
详谈python http长连接客户端
Jun 12 Python
Python使用try except处理程序异常的三种常用方法分析
Sep 05 Python
Python填充任意颜色,不同算法时间差异分析说明
May 16 Python
python中有函数重载吗
May 28 Python
IntelliJ 中配置 Anaconda的过程图解
Jun 01 Python
Python实现爬取并分析电商评论
Jun 19 Python
python各种excel写入方式的速度对比
Nov 10 Python
Django如何与Ajax交互
Apr 29 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 array_flip() 删除重复数组元素专用函数
2010/05/16 PHP
ThinkPHP3.1新特性之字段合法性检测详解
2014/06/19 PHP
简单的pgsql pdo php操作类实现代码
2016/08/25 PHP
实例解析php的数据类型
2018/10/24 PHP
HTML Dom与Css控制方法
2010/10/25 Javascript
autoIMG 基于jquery的图片自适应插件代码
2011/03/12 Javascript
图片在浏览器中底部对齐 解决方法之一
2011/11/30 Javascript
javascript实现 百度翻译 可折叠的分享按钮列表
2015/03/12 Javascript
使用RequireJS库加载JavaScript模块的实例教程
2016/06/06 Javascript
Jq通过td获取同行其它列td的方法
2016/10/05 Javascript
jquery判断页面网址是否有效的两种方法
2016/12/11 Javascript
微信小程序 image组件binderror使用例子与js中的onerror区别
2017/02/15 Javascript
JavaScript实现焦点进入文本框内关闭输入法的核心代码
2017/09/20 Javascript
详解基于vue-cli优化的webpack配置
2017/11/06 Javascript
ztree加载完成后显示勾选节点的实现代码
2018/10/22 Javascript
JavaScript设计模式之装饰者模式实例详解
2019/01/17 Javascript
详解vue项目中使用token的身份验证的简单实践
2019/03/08 Javascript
JavaScript中的ES6 Proxy的具体使用
2019/06/16 Javascript
antd中table展开行默认展示,且不需要前边的加号操作
2020/11/02 Javascript
原生js实现放大镜组件
2021/01/22 Javascript
[04:29]DOTA2亚洲邀请赛小组赛第一日 TOP10精彩集锦
2015/02/01 DOTA
kNN算法python实现和简单数字识别的方法
2014/11/18 Python
Python与Redis的连接教程
2015/04/22 Python
python 3.5下xadmin的使用及修复源码bug
2017/05/10 Python
Python设计模式之MVC模式简单示例
2018/01/10 Python
解决Python网页爬虫之中文乱码问题
2018/05/11 Python
django用户登录和注销的实现方法
2018/07/16 Python
pytorch:实现简单的GAN示例(MNIST数据集)
2020/01/10 Python
Python 创建守护进程的示例
2020/09/29 Python
英国花园药房: The Garden Pharmacy
2017/12/28 全球购物
硕士研究生自我鉴定
2013/11/08 职场文书
新品发布会策划方案
2014/06/08 职场文书
干部对照检查材料范文
2014/08/26 职场文书
2014年公务员退休工资改革方案
2014/10/01 职场文书
《时代广场的蟋蟀》读后感:真挚友情,温暖世界!
2020/01/08 职场文书
python游戏开发Pygame框架
2022/04/22 Python