梯度计算中的一些算子

一、sobel算子

算子矩阵:

复制代码
# sobel算子 算梯度
# Gx = 右边-左边;Gy = 下边 - 上边
import cv2

def cv_show(name, img):
    cv2.imshow(name, img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

img_people = cv2.imread('people.png', cv2.IMREAD_GRAYSCALE)
cv_show('img_people', img_people)
原图结果:

# dst = cv2.Sobel(src, ddepth, dx, dy, ksize)
# ddepth:图像的深度,ksiz是sobel算子的大小,cv2.CV_64F 是一种浮点数类型,表示为64位的浮点数
# 1, 0 表示的就是在x方向上做,而y方向上不做
sobelx = cv2.Sobel(img_people, cv2.CV_64F, 1, 0, ksize=3)
sobelx = cv2.convertScaleAbs(sobelx)
Gx的结果:

sobely = cv2.Sobel(img_people, cv2.CV_64F, 0, 1, ksize=3)
sobely = cv2.convertScaleAbs(sobely)
Gy的结果:

cv_show('Gx', sobelx)
cv_show('Gy', sobely)
# G = Gx+Gy
# 分别计算x与y,再求和
sobelxy = cv2.addWeighted(sobelx,0.5, sobely, 0.5, 0)
cv_show('G', sobelxy)
G的结果:
# 不建议直接计算
# 计算效果提取出来的边缘不明显
sobelxy = cv2.Sobel(img_people, cv2.CV_64F, 1, 1, ksize=3)
# 有正有负,使用convertScaleAbs
sobelxy = cv2.convertScaleAbs(sobelxy)
cv_show('直接计算G', sobelxy)

G直接计算的结果:

二、Scharr算子与laplacian算子

计算矩阵中的数值变得更大,代码执行的结果更为丰富。laplacian算子,对噪声更敏感。

Scharr算子:

laplacian算子:

复制代码
# 不同算子的差异
sobelx = cv2.Sobel(img_people, cv2.CV_64F, 1, 0, ksize=3)
sobelx = cv2.convertScaleAbs(sobelx)
sobely = cv2.Sobel(img_people, cv2.CV_64F, 0, 1, ksize=3)
sobely = cv2.convertScaleAbs(sobely)
sobelxy = cv2.addWeighted(sobelx,0.5, sobely, 0.5, 0)

Scharr算子:
scharrx = cv2.Scharr(img_people, cv2.CV_64F, 1, 0)
scharrx = cv2.convertScaleAbs(scharrx)
scharry = cv2.Scharr(img_people, cv2.CV_64F, 0, 1)
scharry = cv2.convertScaleAbs(sobely)
scharrxy = cv2.addWeighted(sobelx,0.5, scharry, 0.5, 0)

laplacian算子:(没有x与y方向)
laplacian = cv2.Laplacian(img_people, cv2.CV_64F)
laplacian = cv2.convertScaleAbs(laplacian)
res = np.hstack((sobelxy, scharrxy, laplacian))
cv_show('res', res)
相关推荐
天天被压力24 分钟前
【别再到处找免费股票数据API了:官方204个接口,32篇一次讲透 #02】涨停跌停与特色股池:5类股池接口一次拉全
java·人工智能·python
Wx-bishekaifayuan25 分钟前
springboot甘肃特产服务平台50301-计算机课程设计、毕业设计
spring boot·后端·python·django·课程设计·express·旅游
midelshuang28 分钟前
RAG 文档解析(三):bbox 实战——多栏排版与水印 PDF
python
FYKJ_201037 分钟前
springboot雅集社区养老管理系统04456-计算机课程设计、毕业设计
vue.js·spring boot·python·mysql·typescript·spark·django
zhanghaha13141 小时前
Python进阶教程:35_PyQt (保姆级零基础教程)
开发语言·python·pyqt
信誓旦旦的程序猿1 小时前
【Python 量化取数指南 #09】Python 拿港股通数据:港股通成交与港股财报实测
java·python·股票数据api·股票数据·股票数据api接口·股票api数据接口·股票量化数据api
FYKJ_20101 小时前
springboot羽毛球场地管理系统00626-计算机课程设计、毕业设计
vue.js·spring boot·python·mysql·typescript·spark·django
Wx-bishekaifayuan1 小时前
django医院营收信息预测系统49414-计算机课程设计、毕业设计
spring boot·后端·python·django·课程设计·express·旅游
Wx-bishekaifayuan1 小时前
springboot会议室预约管理系统42030-计算机课程设计、毕业设计
spring boot·后端·python·django·课程设计·express·旅游
IT毕设梦工厂2 小时前
计算机毕业设计选题推荐:基于大数据的房地产交易数据分析与可视化|毕业设计选题|计算机毕设|选题推荐|毕设指导|项目定制|源码|高质量项目
大数据·hive·hadoop·python·数据分析·spark·课程设计