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
浅谈pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)
Apr 10 Python
Python 解决中文写入Excel时抛异常的问题
May 03 Python
Python并发:多线程与多进程的详解
Jan 24 Python
Python 3.6 -win64环境安装PIL模块的教程
Jun 20 Python
PyQt5+Caffe+Opencv搭建人脸识别登录界面
Aug 28 Python
Django REST框架创建一个简单的Api实例讲解
Nov 05 Python
Python如何避免文件同名产生覆盖
Jun 09 Python
零基础小白多久能学会python
Jun 22 Python
如何使用Pytorch搭建模型
Oct 26 Python
详解Python GUI编程之PyQt5入门到实战
Dec 10 Python
Python3.9.1中使用match方法详解
Feb 08 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实现的连贯操作、链式操作实例
2014/07/08 PHP
Python中使用django form表单验证的方法
2017/01/16 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
使用Entrust扩展包在laravel 中实现RBAC的功能
2020/03/16 PHP
js模拟点击事件实现代码
2012/11/06 Javascript
js限制文本框输入长度两种限制方式(长度、字节数)
2012/12/19 Javascript
js实现按Ctrl+Enter发送效果
2014/09/18 Javascript
Nodejs极简入门教程(三):进程
2014/10/27 NodeJs
jquery中one()方法的用法实例
2015/01/16 Javascript
javascript结合Flexbox简单实现滑动拼图游戏
2016/02/18 Javascript
jQuery实现的简单分页示例
2016/06/01 Javascript
jQuery中的ready函数与window.onload谁先执行
2016/06/21 Javascript
微信小程序 WXML、WXSS 和JS介绍及详解
2016/10/08 Javascript
jQuery修改DOM结构_动力节点Java学院整理
2017/07/05 jQuery
Chrome调试折腾记之JS断点调试技巧
2017/09/11 Javascript
AngularJs 延时器、计时器实例代码
2017/09/16 Javascript
javascript 构建模块化开发过程解析
2019/09/11 Javascript
Python删除指定目录下过期文件的2个脚本分享
2014/04/10 Python
pycharm 使用心得(九)解决No Python interpreter selected的问题
2014/06/06 Python
跟老齐学Python之用Python计算
2014/09/12 Python
python从入门到精通(DAY 3)
2015/12/20 Python
python实现百万答题自动百度搜索答案
2018/01/16 Python
Pipenv一键搭建python虚拟环境的方法
2018/05/22 Python
python3解析库lxml的安装与基本使用
2018/06/27 Python
Python修改文件往指定行插入内容的实例
2019/01/30 Python
numpy库与pandas库axis=0,axis= 1轴的用法详解
2019/05/27 Python
python 字典的打印实现
2019/09/26 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
2020/05/11 Python
HTML5 embed 标签使用方法介绍
2013/08/13 HTML / CSS
Canvas高级路径操作之拖拽对象的实现
2019/08/05 HTML / CSS
会计主管岗位职责范文
2013/11/08 职场文书
个人党性剖析材料
2014/02/03 职场文书
物业管理毕业生的自我评价
2014/02/17 职场文书
投资协议书范本
2014/04/21 职场文书
会计手工模拟做账心得体会
2016/01/22 职场文书
HTML+CSS制作心跳特效的实现
2021/05/26 HTML / CSS