1. cv2.Scharr(src,ddepth, dx, dy), 使用Scharr算子进行计算

参数说明:src表示输入的图片,ddepth表示图片的深度,通常使用-1, 这里使用cv2.CV_64F允许结果是负值, dx表示x轴方向算子,dy表示y轴方向算子

2.cv2.laplacian(src, ddepth) 使用拉普拉斯算子进行计算

参数说明: src表示输入的图片,ddepth表示图片的深度,这里使用cv2.CV_64F允许结果是负值

scharr算子, 从图中我们可以看出scharr算子,比sobel算子在比例上要更大,因此这样的好处是scharr算子获得的结果能体现出更多的边缘梯度的细节

laplacian 算子,从图中可以看出当前点的位置与周围4个点位置之差, 即周围四个点之和 - 4*当前位置像素点,这种算法容易受到噪声点的干扰,不存在x和y轴的计算过程

代码:

第一步: 载入图片,使用cv2.IMREAD_GRAYSCALE,读入的图片为灰度图

第二步:使用cv2.Sobel获得合并的sobel算子运算结果

第三步:使用cv2.Scharr获得合并的scharr算子梯度运算结果

第四步:使用cv2.laplacian算子获得拉普拉斯算子梯度运算结果

第五步:对3个结果进行最终的画图操作

import cv2
import numpy as np # 第一步读取图片
lena = cv2.imread('lena.jpg', cv2.IMREAD_GRAYSCALE)
cv2.imshow('lena', lena)
cv2.waitKey(0)
cv2.destroyAllWindows()

读入的黑白原始图片

# 第二步:使用cv2.sobel进行sobel算子计算
sobel_x = cv2.Sobel(lena, cv2.CV_64F, 1, 0)
sobel_y = cv2.Sobel(lena, cv2.CV_64F, 0, 1)
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.scharr进行scharr算子计算
scharr_x = cv2.Scharr(lena, cv2.CV_64F, 1, 0)
scharr_y = cv2.Scharr(lena, cv2.CV_64F, 0, 1)
scharr_x = cv2.convertScaleAbs(scharr_x)
scharr_y = cv2.convertScaleAbs(scharr_y)
scharr_xy = cv2.addWeighted(scharr_x, 0.5, scharr_y, 0.5, 0) # 第四步: 使用cv2.laplacian 拉普拉斯算子计算
lapkacian = cv2.Laplacian(lena, cv2.CV_64F)
lapkacian = cv2.convertScaleAbs(lapkacian) # 第五步: 对三种结果进行画图
cv2.imshow('imgs', np.hstack((sobel_xy, scharr_xy, lapkacian)))
cv2.waitKey(0)
cv2.destroyAllWindows()

可以看出使用sobel算子的轮廓要更清晰,scharr算子的轮廓的细节更多,laplacian获得的结果边缘信息较浅

机器学习进阶-图像梯度计算-scharr算子与laplacian算子(拉普拉斯) 1.cv2.Scharr(使用scharr算子进行计算) 2.cv2.laplician(使用拉普拉斯算子进行计算)的更多相关文章

  1. 机器学习进阶-图像梯度运算-Sobel算子 1. cv2.Sobel(使用Sobel算子进行计算) 2. cv2.convertScalerAbs(将像素点进行绝对值的计算)

    1.cv2.Sobel(src, ddepth, dx, dy, ksize)  进行sobel算子计算 参数说明:src表示当前图片,ddepth表示图片深度,这里使用cv2.CV_64F使得结果可 ...

  2. 机器学习进阶-图像形态学操作-梯度运算 cv2.GRADIENT(梯度运算-膨胀图像-腐蚀后的图像)

    1.op = cv2.GRADIENT 用于梯度运算-膨胀图像-腐蚀后的图像 梯度运算:表示的是将膨胀以后的图像 - 腐蚀后的图像,获得了最终的边缘轮廓 代码: 第一步:读取pie图片 第二步:进行腐 ...

  3. 机器学习进阶-图像金字塔与轮廓检测-模板匹配(单目标匹配和多目标匹配)1.cv2.matchTemplate(进行模板匹配) 2.cv2.minMaxLoc(找出矩阵最大值和最小值的位置(x,y)) 3.cv2.rectangle(在图像上画矩形)

    1. cv2.matchTemplate(src, template, method)  # 用于进行模板匹配 参数说明: src目标图像, template模板,method使用什么指标做模板的匹配 ...

  4. 机器学习进阶-图像金字塔与轮廓检测-轮廓检测 1.cv2.cvtColor(图像颜色转换) 2.cv2.findContours(找出图像的轮廓) 3.cv2.drawContours(画出图像轮廓) 4.cv2.contourArea(轮廓面积) 5.cv2.arcLength(轮廓周长) 6.cv2.aprroxPloyDP(获得轮廓近似) 7.cv2.boudingrect(外接圆)..

    1. cv2.cvtcolor(img, cv2.COLOR_BGR2GRAY) # 将彩色图转换为灰度图 参数说明: img表示输入的图片, cv2.COLOR_BGR2GRAY表示颜色的变换形式 ...

  5. 机器学习进阶-图像金字塔与轮廓检测-图像金字塔-(**高斯金字塔) 1.cv2.pyrDown(对图片做向下采样) 2.cv2.pyrUp(对图片做向上采样)

    1.cv2.pyrDown(src)  对图片做向下采样操作,通常也可以做模糊化处理 参数说明:src表示输入的图片 2.cv2.pyrUp(src) 对图片做向上采样操作 参数说明:src表示输入的 ...

  6. 机器学习进阶-图像形态学操作-膨胀操作 1.cv2.dilate(进行膨胀操作)

    1.cv2.dilate(src, kernel, iteration) 参数说明: src表示输入的图片, kernel表示方框的大小, iteration表示迭代的次数 膨胀操作原理:存在一个ke ...

  7. 机器学习进阶-图像形态学操作-腐蚀操作 1.cv2.erode(进行腐蚀操作)

    1.cv2.erode(src, kernel, iteration) 参数说明:src表示的是输入图片,kernel表示的是方框的大小,iteration表示迭代的次数 腐蚀操作原理:存在一个ker ...

  8. 机器学习进阶-人脸关键点检测 1.dlib.get_frontal_face_detector(构建人脸框位置检测器) 2.dlib.shape_predictor(绘制人脸关键点检测器) 3.cv2.convexHull(获得凸包位置信息)

    1.dlib.get_frontal_face_detector()  # 获得人脸框位置的检测器, detector(gray, 1) gray表示灰度图, 2.dlib.shape_predict ...

  9. 机器学习进阶-图像特征sift-SIFT特征点 1.cv2.xfeatures2d.SIFT_create(实例化sift) 2. sift.detect(找出关键点) 3.cv2.drawKeypoints(画出关键点) 4.sift.compute(根据关键点计算sift向量)

    1. sift = cv2.xfeatures2d.SIFT_create() 实例化 参数说明:sift为实例化的sift函数 2. kp = sift.detect(gray, None)  找出 ...

随机推荐

  1. bzoj4937: [Ceoi2016]popeala

    Description 你办了一场比赛,有n给人参加,只有一道题,有m个数据点,标号为1~m,每个测试点都有一个分数a[i].现在所 有选手已经提交了程序并且测评完了,你知道每个人都能通过哪些测试点. ...

  2. [转][Dapper]参数化查询慢

      参考:https://www.cnblogs.com/wy123/p/7190785.html 参考:https://www.cnblogs.com/Irving/p/3951220.html i ...

  3. Node.js 搭建HTTP服务器,提供文件下载

    直接上代码,这是第一版,可以判断扩展名 var http = require('http'); var express = require('express'); var fs=require(&qu ...

  4. hashMap为啥初始化容量为2的次幂

    原文 https://blog.csdn.net/sd_csdn_scy/article/details/57083619hashMap源码获取元素的位置: static int indexFor(i ...

  5. element ui中dialog相关问题

    一,今天需要在dialog里面引入另一个页面,就是打开dialog显示该页面(把页面放到dialog中),引入的语句如下: <iframe src="view?path=rkdj_b& ...

  6. 集群Redis使用 Python pipline大批量插入数据

    class myRedis(object):     def __init__(self,redis_type=None,**args):         if redis_type == " ...

  7. windows server 2012 r2 安装IIS失败

    给新的2012服务器安装IIS时报错: 错误原因:就在于选中了.net framework 3.5 . 如果要安装.net framework 3.5 使用以下步骤: 1 加载安装光盘,如果没有可以网 ...

  8. CentOS之正则表达式

    支持linux正则表达式的工具有:grep:实现查找,sed,awk:都是流式编辑器,可以实现查找和替换,并且把替换的文本输出到屏幕上. grep工具 grep [-cinvABC] 'word' - ...

  9. samba安装

    第一步下载: wget https://download.samba.org/pub/samba/stable/samba-4.6.7.tar.gz 看了下没看到啥有用的直接安装: ./configu ...

  10. Submline Text 3插件sublimeTmpl添加新模板

    1.安装 一般安装Package Control 2.插件 添加模板 1).进入Preferences->Browse Packages->SublimeTmpl->template ...