例子源于OpenCV官网手册(https://docs.opencv.org/4.x/d2/d2c/tutorial_sobel_derivatives.html)
使用OpenCV函数Sobel()计算图像的导数。
使用OpenCV函数Scharr()计算大小为3⋅3的核的更精确导数

应用Sobel运算符,生成一个在较暗背景下具有较亮边缘的图像作为输出。代码如下所示。

"""
@file sobel_demo.py
@brief Sample code using Sobel and/or Scharr OpenCV functions to make a simple Edge Detector
"""
import sys#sys模块包含了与Python解释器和它的环境有关的函数。
import cv2 as cv
def main(argv):#声明变量window_name = ('Sobel Demo - Simple Edge Detector')scale = 1#规模delta = 0ddepth = cv.CV_16S#图像的深度#加载图像if len(argv) < 1:print ('Not enough parameters')print ('Usage:\nmorph_lines_detection.py < path_to_image >')return -1# Load the image#src = cv.imread(argv[0], cv.IMREAD_COLOR)src = cv.imread(r'D:\zhiyanyuan\lena.jpg')# Check if image is loaded fineif src is None:print ('Error opening image: ' + argv[0])return -1src = cv.GaussianBlur(src, (3, 3), 0)#高斯模糊,降噪处理gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)#从RBG和BGR颜色空间转换到灰度空间"""cv::cvtColor()用于将图像从一个颜色空间转换到另一个颜色空间的转换(目前常见的颜色空间均支持),并且在转换的过程中能够保证数据的类型不变,即转换后的图像的数据类型和位深与源图像一致。"""#索贝尔算子grad_x = cv.Sobel(gray, ddepth, 1, 0, ksize=3, scale=scale, delta=delta, borderType=cv.BORDER_DEFAULT)#src;传入的图像#ddepth:图像的深度#dx,dy:指的是求导的阶数,0表示这个方向上没有求导,所填的数一般为0、1、2#ksize:是Sobel算子的大小,即卷积核的大小,必须为奇数1、3、5、7。如果ksize=-1,就演变成为3x3的Scharr算子,scale是缩放导数的比例常数,默认情况为没有伸缩系数。#borderType:是判断图像边界的模式,这个参数默认值是cv2.BORDER_DEFAULT# Gradient-Y# grad_y = cv.Scharr(gray,ddepth,0,1)grad_y = cv.Sobel(gray, ddepth, 0, 1, ksize=3, scale=scale, delta=delta, borderType=cv.BORDER_DEFAULT)#将输出转换为CV_8U映像abs_grad_x = cv.convertScaleAbs(grad_x)abs_grad_y = cv.convertScaleAbs(grad_y)#我们试图通过添加两个方向的梯度来近似梯度(注意,这不是一个精确的计算!但它对我们的目的是好的)。grad = cv.addWeighted(abs_grad_x, 0.5, abs_grad_y, 0.5, 0)#梯度#显示结果cv.imshow(window_name, grad)cv.waitKey(0)return 0
if __name__ == "__main__":main(sys.argv[1:])

运行结果:

原图:

应用Sobel算子,生成一个在较暗背景下具有较亮边缘的图像作为输出:

【OpenCV入门学习--python】索贝尔算子Sobel operator提取边缘相关推荐

  1. 索贝尔算子Sobel operator

    索贝尔算子(Sobeloperator)主要用于获得数字图像的一阶梯度,是一种离散性差分算子.它是prewitt算子的改进形式,改进之处在于sobel算子认为,邻域的像素对当前像素产生的影响不是等价的 ...

  2. 【OpenCV入门学习--python】Anisotropic image segmentation by a gradient structure tensor

    例子源于OpenCV官网–基于梯度结构张量的各向异性图像分割 (https://docs.opencv.org/4.x/d4/d70/tutorial_anisotropic_image_segmen ...

  3. 【OpenCV入门学习--python】Image Segmentation with Distance Transform and Watershed Algorithm图像分割

    例子源于OpenCV官网–基于距离变换和分水岭算法的图像分割 (https://docs.opencv.org/4.x/d2/dbd/tutorial_distance_transform.html) ...

  4. 【OpenCV入门学习--python】图像的矩Image Moments

    例子源于OpenCV官网–图像的矩 (https://docs.opencv.org/4.x/d0/d49/tutorial_moments.html) 使用OpenCV函数cv::moments: ...

  5. 【计算机视觉】opencv入门学习笔记Part.1

    [计算机视觉]opencv入门学习笔记Part.1 1 前言 1.1 opencv概述(摘取自百度百科) 1.2 图像概念引入 1.3 安装opencv库 2 图像基本操作 2.1 图像的读取 2.2 ...

  6. 零基础入门学习Python,我与python的第一次亲密接触后的感受!

    前言:Python是适合初学者入门最好的语言 Python适合初学者入门最好的语言 人工智能用Python?高考要加入Python?现在连微软官方Excel都要把Python作为官方语言!Python ...

  7. 零基础入门学python 第二版-《零基础入门学习Python》第二版和第一版的区别在哪里呢?...

    第一版 时光荏苒,一晃间,距离<零基础入门学习 Python>出版(2016年11月)已经过去两年多了,在这段时间里, Python 逐步走入了大家的视野,这门语言因其简洁的语法风格,在云 ...

  8. 0基础学python难吗-零基础入门学习Python技术难不难?

    原标题:零基础入门学习Python技术难不难? 近几年对python人才爆发式需求,导致很多人转行进入python开发行业,现如今Python这门语言的就业前景会非常好.相对于其他来说,它语法简单易读 ...

  9. 如何自学python爬虫-怎样入门学习Python爬虫?

    怎样入门学习Python爬虫? 1.掌握Python编程能基础 想要学习爬虫,首先要充分掌握Python编程技术相关的基础知识.爬虫其实就是遵循一定的规则获取数据的过程,所以在学习Python知识的过 ...

最新文章

  1. java validation_java bean validation 参数验证
  2. 边缘化搭建DotNet Core 2.1 自动化构建和部署环境(上)
  3. spoj1026 favorite dice
  4. 塑料封装可靠性问题浅析
  5. 领域驱动设计的简略设计步骤
  6. 编制一个c语言成绩记录簿_C语言基础知识点模拟试题
  7. 西电计算机达标测试挂科保研,西电竞赛保研
  8. android8 测试,Android 8.0 Oreo 国内可用测试平台上线
  9. utf-8、UTF-8、utf8 在使用中的区别
  10. openEuler软件包加固项目笔记
  11. Filenet基金会发放第一期打包节点公开激励
  12. Arduino+sim800 gsm收发短信
  13. c语言迭代埃特金加速算法,5-埃特金加速迭代算法
  14. html5玻璃下雨,下雨天外后视镜总是沾满水珠 6个妙招帮你解决这个难题
  15. python在mac模拟鼠标点击_python模拟鼠标点击和键盘输入的操作
  16. 玩纸牌游戏计算机教案,小班数学活动好玩的扑克牌教案
  17. 如何成为有效学习的高手 学习笔记
  18. PaddlePaddle深度学习实战——英法文翻译机
  19. 【报告分享】2021电商618生态洞察报告-亿邦动力研究院(附下载)
  20. android不设密码装证书,安卓4.0不设置锁屏安装根证书教程

热门文章

  1. 基于JAVA果之芒农场销售系统计算机毕业设计源码+数据库+lw文档+系统+部署
  2. VMware和Virtual Box虚拟机的区别
  3. 【联诚发】今日热搜,我的女人我宠着
  4. 转发-基于51单片机的呼出有毒气体(煤气、酒精、co)检测仪设计
  5. Dobble的学习视频地址
  6. 头条、快手,那些我曾经错过的暴富机会 | 程序员有话说
  7. 【nodejs】脚手架从零开始搭建JBD
  8. python zip函数dict_python zip()函数的使用示例
  9. 摩托罗拉Razr3配置怎么样 摩托罗拉Razr3何时上市
  10. 新手村-看过本篇文章的都不会放弃编程学习