前文介绍了sobel算子
opencv学习笔记14:sobel算子及其函数使用

scharr算子理论

系数和sobel不一样,其他一样。

scharr函数使用

dst=cv2.Scharr(src,ddpetph,dx,dy)
dst:处理结果
src:源图像
ddpetph:图像深度
dx:x轴方向,
dy:y轴方向

实际操作中,计算梯度值可能会出现负值而被截断。通常处理的图像类型为np.unit8,处理后的结果也是该类型,所有负数截断为0,发生信息丢失。
所以,在计算时,使用更高的数据类型cv2.CV_64F,取绝对值后再转换成np.unit8(cv2.CV_8U)。所以深度ddepth不写-1,改cv2.CV_64F
cv2.convertScaleAbs(imgsrc)
取绝对值,并将梯度图像转换成256色位图,转换为unit8类型

scharr算例代码

计算x轴梯度

import cv2
import numpy as np
o = cv2.imread('scharr.bmp',cv2.IMREAD_GRAYSCALE)
scharrx = cv2.Scharr(o,cv2.CV_64F,1,0)
scharrx = cv2.convertScaleAbs(scharrx)   # 转回uint8
cv2.imshow("original",o)
cv2.imshow("x",scharrx)
cv2.waitKey()
cv2.destroyAllWindows()

计算y轴梯度

import cv2
import numpy as np
o = cv2.imread('scharr.bmp',cv2.IMREAD_GRAYSCALE)
scharry = cv2.Scharr(o,cv2.CV_64F,0,1)
scharry = cv2.convertScaleAbs(scharry)  # 转回uint8
cv2.imshow("original",o)
cv2.imshow("y",scharry)
cv2.waitKey()
cv2.destroyAllWindows()

计算dx+dy

import cv2
import numpy as np
o = cv2.imread('scharr.bmp',cv2.IMREAD_GRAYSCALE)
scharrx = cv2.Scharr(o,cv2.CV_64F,1,0)
scharry = cv2.Scharr(o,cv2.CV_64F,0,1)
scharrx = cv2.convertScaleAbs(scharrx)   # 转回uint8
scharry = cv2.convertScaleAbs(scharry)
scharrxy =  cv2.addWeighted(scharrx,0.5,scharry,0.5,0)
cv2.imshow("original",o)
cv2.imshow("xy",scharrxy)
cv2.waitKey()
cv2.destroyAllWindows()

错误示例:dx=1,dy=1
这点不同于sobel

import cv2
import numpy as np
o = cv2.imread('scharr.bmp',cv2.IMREAD_GRAYSCALE)
scharrxy11=cv2.Scharr(o,cv2.CV_64F,1,1)
cv2.imshow("original",o)
cv2.imshow("xy11",scharrxy11)
cv2.waitKey()
cv2.destroyAllWindows()

dx >= 0 && dy >= 0 && dx+dy == 1

注意:
dst=cv2.Scharr(src,cv2.CV_64F,dx,dy)
等于
dst=cv2.Sobel(src,cv2.CV_64F,dx,dy,-1)

Sobel对一个卷积核参数,默认为3.当卷积核=-1时,表示Scharr函数

总目录链接:
python3+opencv学习笔记汇总目录(适合基础入门学习)

进阶版梯度讲解:
opencv进阶学习笔记10:图像金字塔和图像梯度
电气专业的计算机小白,写博文不容易。如果你觉得本文对你有用,请点个赞支持下,谢谢。

opencv学习笔记16:梯度运算之scharr算子及其函数使用相关推荐

  1. (_cai_) opencv学习笔记(1):图像形态学计算的方式 morphology函数的应用

    1.腐蚀 概述:腐蚀掉图像的细节.若图像有很多毛刺,通过腐蚀操作,可以将毛刺消除. 下面所说的"值"可以简单理解为RGB三个通道[0,255],值越小,亮度越低,值越大,亮度越高. ...

  2. 【Matlab学习笔记】控制运算精度digits和vpa函数

    matlab控制运算精度用的是digits和vpa这两个函数 digits用于规定运算精度,比如: digits(20); 这个语句就规定了运算精度是20位有效数字.但并不是规定了就可以使用,因为实际 ...

  3. OpenCV学习笔记——HSV颜色空间超极详解inRange函数用法及实战

    目录 一.HSV颜色系统简介 二.HSV值对颜色的影响 三.HSV和RGB的互相转化 四.OpenCV中的HSV颜色体系 五.OpenCV实战--两种方法使用OpenCV进行颜色分割 六.inRang ...

  4. 36篇博文带你学完opencv :python3+opencv学习笔记汇总目录(基础版)

    经过几天的学习,opencv基础部分学习完啦.整理出来. OpenCV opencv学习笔记1:图片读入,显示与保存(有代码) opencv学习笔记2:图像处理基础 opencv学习笔记3:像素处理 ...

  5. OpenCV学习笔记02--图像像素处理--二值图像、灰度图像、彩色图像像素的处理、numpy.array中的对应的函数

    目录 (一)灰度图像像素处理 (二)彩色图像像素处理 (三)numpy.array库在图像处理中的应用 (四)查看图像的属性信息 接着笔记01继续总结,当我们读取一幅图像的时候,一般为二值图像.灰度图 ...

  6. opencv学习笔记八--答题卡识别

    opencv学习笔记八--答题卡识别 导入工具包 定义函数 扫描 自适应阈值处理 检测每一个选项的轮廓 对轮廓进行排序以获取序号 打印结果 参考 导入工具包 #导入工具包 import numpy a ...

  7. opencv学习笔记17:梯度运算之laplacian算子及其应用

    laplacian算子理论 前文介绍了sobel算子及其函数使用 和scharr算子及其函数使用 使用方法 不同算子比较 sobel,和scharr算子:右边121列-左边121列.右边-3,10,3 ...

  8. OpenCV学习笔记(八):形态学morpholgy(2):开/闭运算,形态学梯度、顶帽/黑帽morphologyEx()

    OpenCV学习笔记(八):形态学morpholgy(2):开.闭运算,形态学梯度.顶帽.黑帽:morphologyEx() 数学形态学(Mathematical morphology) 是一门建立在 ...

  9. OpenCV学习笔记(十二):边缘检测:Canny(),Sobel(),Laplace(),Scharr滤波器

    OpenCV学习笔记(十二):边缘检测:Canny(),Sobel(),Laplace(),Scharr滤波器 1)滤波:边缘检测的算法主要是基于图像强度的一阶和二阶导数,但导数通常对噪声很敏感,因此 ...

最新文章

  1. python学习第一章要点
  2. .NET轻量级ORM框架Dapper入门精通
  3. 提防Java中的函数式编程!
  4. 前端学习(1036):bootstrap-js插件2
  5. 用g++编译生成动态连接库*.so的方法及连接
  6. NYOJ47过河问题
  7. .NET方法演化史 从Delegate到Lambda再到LINQ
  8. mysql的建库建表语句_SQL语句(建库、建表、修改语句)
  9. 阿里云OSS对象存储STS鉴权配置
  10. 腾讯实习生招聘笔试题目
  11. 同步图计算:GraphLite的安装和使用
  12. 剪贴板查看器clipbrd.exe
  13. Linux网络编程:libnet 移植及使用
  14. 关于ios app名称注册的问题(抢注)
  15. onscripter For windows/MAC OS 中文版
  16. 【Debug】安装labelme过程中出现的问题
  17. 利用matlab的interp1()对矩阵进行插值
  18. php版本kms,通过 AWS KMS API 和 AWS SDK for PHP 版本 3 使用别名 - 适用于 PHP 的 AWS 开发工具包...
  19. 【C++】—— STL简介(了解)
  20. 用stm32F103核心板的GPIOA端一管脚接一个LED,GPIOB端口一引脚接一个开关(用杜邦线模拟代替)。采用中断模式编程,当开关接高电平时,LED亮灯;接低电平时,LED灭灯。

热门文章

  1. springboot redis 刷新时间_「SpringBoot实战」SpringCache + Redis实现数据缓存
  2. three.js两个点给线条加宽度_108m2家里镶金线条,就是不一样,装出大宅范!太美了!晒晒...
  3. SpringMVC获取请求参数-POJO类型参数
  4. 云效 Flow——Java构建并通过云效上传二方库到 Maven 私有仓库
  5. JavaScript——判断undefined解决方案
  6. springboot封装统一查询对象进行多条件查询案例(mybatis和mybatis-plus+反射两种版本)
  7. 【问题记录】服务器部署项目时启动tomcat后报错 HTTP 错误 404.0- Not Found 您要找的资源已被删除、已更名或暂时不可用 解决方案···
  8. JavaWeb学习之路——SSM框架之SpringMVC(八)
  9. Android-源码剖析CountDownTimer(倒计时类)
  10. Android 优化电池使用时间——确定和检测网络状态