OpenCV学习之图像梯度算子详解

 更新时间:2023年02月15日 15:46:28   作者:双子座断点  
这篇文章主要为大家详细介绍了OpenCV中图像梯度算子的各种操作,例如Sobel算子、Scharr算子和laplacian算子等操作,感兴趣的可以了解一下

本文是OpenCV图像视觉入门之路的第12篇文章,本文详细的介绍了图像梯度算子的各种操作,例如:Sobel算子Scharr算子laplacian算子等操作。

1.Sobel算子

Sobel算子是一种图像边缘检测算子,它是一种空间滤波器,可以检测图像中的边缘,而梯度运算是一种求导数的方法,可以用来检测图像中的局部变化。

import cv2
import numpy as np
from numpy import unicode
 
if __name__ == '__main__':
    # 不同算子的差异
    img = cv2.imread('D:/Jupyter_Notebooks/0.jpg', cv2.IMREAD_GRAYSCALE)
    sobel_x = cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=3)
    sobel_y = cv2.Sobel(img, cv2.CV_64F, 0, 1, ksize=3)
    sobel_x = cv2.convertScaleAbs(sobel_x)
    sobel_y = cv2.convertScaleAbs(sobel_y)
    sobel_xy = cv2.addWeighted(sobel_x, 0.5, sobel_y, 0.5, 0)
 
    cv2.imshow("sobel_xy", sobel_xy)
 
    img = cv2.imread('D:/Jupyter_Notebooks/0.jpg', cv2.IMREAD_GRAYSCALE)
    cv2.imshow("img", img)
 
    cv2.waitKey(0)
    cv2.destroyAllWindows()

2.Scharr算子

Sobel算子是一种图像边缘检测算法,它可以检测图像中的水平边缘和垂直边缘。它使用卷积核来检测图像中的边缘,并且可以检测出图像中的细微变化。OpenCV是一个计算机视觉库,它提供了一系列的函数,可以用来处理图像,包括Sobel算子。OpenCV提供了一系列的函数,可以用来处理图像,包括Sobel算子,但它也提供了其他的图像处理算法,如Canny边缘检测算法,Hough变换算法等。

import cv2
import numpy as np
from numpy import unicode
 
if __name__ == '__main__':
    img = cv2.imread('D:/Jupyter_Notebooks/0.jpg', cv2.IMREAD_GRAYSCALE)
    scharrx = cv2.Scharr(img, cv2.CV_64F, 1, 0)
    scharry = cv2.Scharr(img, cv2.CV_64F, 0, 1)
    scharrx = cv2.convertScaleAbs(scharrx)
    scharry = cv2.convertScaleAbs(scharry)
    scharrxy = cv2.addWeighted(scharrx, 0.5, scharry, 0.5, 0)
 
    cv2.imshow("scharrxy", scharrxy)
 
    img = cv2.imread('D:/Jupyter_Notebooks/0.jpg', cv2.IMREAD_GRAYSCALE)
    cv2.imshow("img", img)
 
    cv2.waitKey(0)
    cv2.destroyAllWindows()

3.laplacian算子

Laplacian算子是一种图像处理技术,它可以用来检测图像中的边缘和轮廓。它是一种二阶微分算子,可以用来检测图像中的边缘,并且可以用来检测图像中的噪声。它的基本原理是,它会计算图像中每个像素点的梯度,并且根据梯度的大小来检测图像中的边缘。

import cv2
import numpy as np
from numpy import unicode
 
if __name__ == '__main__':
    img = cv2.imread('D:/Jupyter_Notebooks/0.jpg', cv2.IMREAD_GRAYSCALE)
    laplacian = cv2.Laplacian(img, cv2.CV_64F)
    laplacian = cv2.convertScaleAbs(laplacian)
 
    cv2.imshow("laplacian", laplacian)
 
    img = cv2.imread('D:/Jupyter_Notebooks/0.jpg', cv2.IMREAD_GRAYSCALE)
    cv2.imshow("img", img)
 
    cv2.waitKey(0)
    cv2.destroyAllWindows()

到此这篇关于OpenCV学习之图像梯度算子详解的文章就介绍到这了,更多相关OpenCV图像梯度算子内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python语法 range() 序列类型range

    python语法 range() 序列类型range

    这篇文章主要介绍了python语法 range() 序列类型range,range是一种序列类型,range类型用于表示不可变的整数序列,下面小编整理了简单内容,需要的小伙伴可以参考一下
    2022-01-01
  • 利用Python连接Oracle数据库的基本操作指南

    利用Python连接Oracle数据库的基本操作指南

    由于之前的在职的公司没有机会接触到Oralce数据库,所以就没有用python连接过Oralce,之前大多集中在连接mysql和sql server,最近在做一下web自动化的工作,所以简单的记录一下,下面这篇文章主要给大家介绍了关于利用Python连接Oracle数据库的基本操作,需要的朋友可以参考下
    2022-06-06
  • Python Sleep休眠函数使用简单实例

    Python Sleep休眠函数使用简单实例

    这篇文章主要介绍了Python Sleep休眠函数使用简单实例,本文直接给出两个实现例子,需要的朋友可以参考下
    2015-02-02
  • python项目下生成requirements.txt方法

    python项目下生成requirements.txt方法

    这篇文章主要介绍了python项目下生成requirements.txt的方法,很多小伙伴不知道如何生成requirements.txt,本文就通过代码示例给大家详细介绍如何生成,,需要的朋友可以参考下
    2023-06-06
  • python中pygraphviz安装教程

    python中pygraphviz安装教程

    本文主要介绍了在Anaconda虚拟环境中安装pygraphviz,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-03-03
  • python 判断自定义对象类型

    python 判断自定义对象类型

    python 判断自定义对象类型 判断内建的类型可以用type。
    2009-03-03
  • 简单实现python爬虫功能

    简单实现python爬虫功能

    这篇文章主要介绍了python实现简单爬虫功能的相关资料,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • Python使用matplotlib 模块scatter方法画散点图示例

    Python使用matplotlib 模块scatter方法画散点图示例

    这篇文章主要介绍了Python使用matplotlib 模块scatter方法画散点图,结合实例形式分析了Python数值运算与matplotlib模块图形绘制相关操作技巧,需要的朋友可以参考下
    2019-09-09
  • 使用Python-OpenCV消除图像中孤立的小区域操作

    使用Python-OpenCV消除图像中孤立的小区域操作

    这篇文章主要介绍了使用Python-OpenCV消除图像中孤立的小区域操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • Python程序打包成可执行文件exe详解流程

    Python程序打包成可执行文件exe详解流程

    你是否也有希望过写一些自己所需要的工具程序来使用,可有不想或者没时间精力学别的语言,本篇文章教你如何将用python语言写的程序打包成可执行的exe文件
    2021-11-11

最新评论