OpenCV半小时掌握基本操作之图像梯度

 更新时间:2021年09月01日 15:42:26   作者:我是小白呀  
这篇文章主要介绍了OpenCV基本操作之图像梯度,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

【OpenCV】⚠️高手勿入! 半小时学会基本操作⚠️图像梯度

概述

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

在这里插入图片描述

梯度运算

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

在这里插入图片描述

例子:

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

# 核
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()

输出结果:

在这里插入图片描述

礼帽

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

例子:

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

# 核
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()

输出结果:

在这里插入图片描述

黑帽

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

例子:

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

# 核
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()

输出结果:

在这里插入图片描述

Sobel 算子

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

格式:

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

参数:

src: 原图

ddepth: 图片深度

dx: 水平方向

dy: 竖直方向

ksize: 算子大小

计算 x

代码:

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

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

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

输出结果:

在这里插入图片描述

计算 y

代码:

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

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

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

输出结果:

在这里插入图片描述

计算 x+y

代码:

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

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

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

输出结果:

在这里插入图片描述

融合

代码:

# 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()

输出结果:

在这里插入图片描述

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

到此这篇关于OpenCV半小时掌握基本操作之图像梯度的文章就介绍到这了,更多相关OpenCV图像梯度内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于Python实现简易的自制头像神器

    基于Python实现简易的自制头像神器

    作为一个不会PS的普通程序员要怎么快速制作一个属于自己的渐变头像呢?十行 Python代码就能解决,非常简单。感兴趣的小伙伴可以跟随小编一起学习一下
    2022-01-01
  • python通过文本在一个图中画多条线的实例

    python通过文本在一个图中画多条线的实例

    今天小编就为大家分享一篇python通过文本在一个图中画多条线的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Python列表转换为Excel表格第一列的方法详解

    Python列表转换为Excel表格第一列的方法详解

    在数据处理和分析的过程中,我们经常需要将Python中的数据结构(如列表)导出到Excel表格中,本文为大家整理了Python列表转换为Excel表格第一列的几种方法,希望对大家有所帮助
    2024-11-11
  • python DataFrame获取行数、列数、索引及第几行第几列的值方法

    python DataFrame获取行数、列数、索引及第几行第几列的值方法

    下面小编就为大家分享一篇python DataFrame获取行数、列数、索引及第几行第几列的值方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • python-opencv在有噪音的情况下提取图像的轮廓实例

    python-opencv在有噪音的情况下提取图像的轮廓实例

    下面小编就为大家带来一篇python-opencv在有噪音的情况下提取图像的轮廓实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • python程序中的线程操作 concurrent模块使用详解

    python程序中的线程操作 concurrent模块使用详解

    这篇文章主要介绍了python程序中的线程操作 concurrent模块使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Python中pyautogui库的使用方法汇总

    Python中pyautogui库的使用方法汇总

    在使用Python做脚本的话,有两个库可以使用,一个为PyUserInput库,另一个为pyautogui库,本文给大家介绍下Python中pyautogui库的使用方法汇总,感兴趣的朋友跟随小编一起看看吧
    2022-03-03
  • 使用pycharm+conda配置虚拟环境的详细步骤

    使用pycharm+conda配置虚拟环境的详细步骤

    这篇文章主要介绍了使用pycharm创建新的项目环境并使用conda进行配置和使用pycharm引用已有的conda虚拟环境,文中通过图文结合的方式介绍的非常详细,需要的朋友可以参考下
    2024-05-05
  • Python MySQLdb 执行sql语句时的参数传递方式

    Python MySQLdb 执行sql语句时的参数传递方式

    这篇文章主要介绍了Python MySQLdb 执行sql语句时的参数传递方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • 基于python检查矩阵计算结果

    基于python检查矩阵计算结果

    这篇文章主要介绍了基于python检查矩阵计算结果,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05

最新评论