本节学习找到图像的梯度和边界。只要用到的函数为: cv2.Sobel(), cv2.Scharr(), cv2.Laplacian()

1. Laplacian 和 Sobel的对比

import cv2
from matplotlib import pyplot as plt img = cv2.imread('dave.png',0)
#Laplcatician 导数计算图像的拉普拉斯变换,其中每个导数都使用Sobel导数
laplacian = cv2.Laplacian(img,cv2.CV_64F)
/**
sobel 是高斯平滑加微分的联合运算,对噪声有较强的抵抗能力。
可以指定倒数方向(垂直和水平)。
如果ksize=-1, 则是3*3的Scharr滤波器,其结果优于3*3的sobel滤波器。
**/
sobelx = cv2.Sobel(img, cv2.CV_64F, 1,0, ksize=5) #5*5的ksize
sobely = cv2.Sobel(img, cv2.CV_64F, 0,1, ksize=5) plt.subplot(2,2,1), plt.imshow(img,cmap='gray')
plt.title('Original'), plt.xticks([]), plt.yticks([])
plt.subplot(2,2,2), plt.imshow(laplacian,cmap='gray')
plt.title('Laplacian'), plt.xticks([]), plt.yticks([])
plt.subplot(2,2,3), plt.imshow(sobelx,cmap='gray')
plt.title('Sobel X'), plt.xticks([]), plt.yticks([])
plt.subplot(2,2,4), plt.imshow(sobely,cmap='gray')
plt.title('Sobel Y'), plt.xticks([]), plt.yticks([])
plt.show()

2. 使用16S和64F得到两边的边界

import cv2
import numpy as np
from matplotlib import pyplot as plt img = cv2.imread('box.png',0)
#8U,如果是以黑白片过度为正斜率(为正直),以白黑片过度为负斜率(为负值),如果再使用uint8,那么负斜率都会被置为0
sobelx8u = cv2.Sobel(img, cv2.CV_8U, 1,0, ksize=5)
sobelx64f = cv2.Sobel(img, cv2.CV_64F, 1,0,ksize=5) #该方法能更好的得到两边的边界
abs_sobel64f = np.absolute(sobelx64f)
sobel_8u = np.uint8(abs_sobel64f) plt.subplot(1,3,1),plt.imshow(img,cmap = 'gray')
plt.title('Original'), plt.xticks([]), plt.yticks([])
plt.subplot(1,3,2),plt.imshow(sobelx8u,cmap = 'gray')
plt.title('Sobel CV_8U'), plt.xticks([]), plt.yticks([])
plt.subplot(1,3,3),plt.imshow(sobel_8u,cmap = 'gray')
plt.title('Sobel abs(CV_64F)'), plt.xticks([]), plt.yticks([])
plt.show()

												

初识OpenCV-Python - 009: 图像梯度的更多相关文章

  1. opencv python:图像梯度

    一阶导数与Soble算子 二阶导数与拉普拉斯算子 图像边缘: Soble算子: 二阶导数: 拉普拉斯算子: import cv2 as cv import numpy as np # 图像梯度(由x, ...

  2. python实现图像梯度

    一,定义与作用 图像梯度作用:获取图像边缘信息 二,Sobel 算子与函数的使用 (1)Sobel 算子------来计算变化率 (2)Sobel函数的使用 (3-1)代码实现(分别): (3-2)代 ...

  3. Opencv python图像处理-图像相似度计算

    一.相关概念 一般我们人区分谁是谁,给物品分类,都是通过各种特征去辨别的,比如黑长直.大白腿.樱桃唇.瓜子脸.王麻子脸上有麻子,隔壁老王和儿子很像,但是儿子下巴涨了一颗痣和他妈一模一样,让你确定这是你 ...

  4. opencv python:图像直方图 histogram

    直接用matplotlib画出直方图 def plot_demo(image): plt.hist(image.ravel(), 256, [0, 256]) # image.ravel()将图像展开 ...

  5. openCV—Python(5)—— 图像几何变换

    一.函数简单介绍 1.warpAffine-图像放射变换(平移.旋转.缩放) 函数原型:warpAffine(src, M, dsize, dst=None, flags=None, borderMo ...

  6. opencv python:图像金字塔

    图像金字塔原理 expand = 扩大+卷积 拉普拉斯金字塔 PyrDown:降采样 PyrUp:还原 example import cv2 as cv import numpy as np # 图像 ...

  7. opencv python:图像二值化

    import cv2 as cv import numpy as np import matplotlib.pyplot as plt # 二值图像就是将灰度图转化成黑白图,没有灰,在一个值之前为黑, ...

  8. opencv+python实现图像锐化

    突然发现网上都是些太繁琐的方法,我就找opencv锐化函数咋这么墨迹. 直接上代码: kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], ...

  9. Python+OpenCV图像处理(十二)—— 图像梯度

    简介:图像梯度可以把图像看成二维离散函数,图像梯度其实就是这个二维离散函数的求导. Sobel算子是普通一阶差分,是基于寻找梯度强度.拉普拉斯算子(二阶差分)是基于过零点检测.通过计算梯度,设置阀值, ...

随机推荐

  1. hadoop创建目录文件失败

    mkdir: Cannot create directory /file. Name node is in safe mode.   刚刚在hadoop想创建一个目录的时候,发现报错了 具体信息如下: ...

  2. 【JZOJ6285】飘雪圣域

    description analysis 从求联通块出发根本没做法,于是考虑连通块里面的边 对于一个询问\([l,r]\),一条边的左端点\(≥l\)且右端点\(≤r\)才在这个区间的点之间 于是对于 ...

  3. thinkphp 上传安全

    网站的上传功能也是一个非常容易被攻击的入口,所以对上传功能的安全检查是尤其必要的. 大理石平台支架 系统提供的上传类Think\Upload提供了安全方面的支持,包括对文件后缀.文件类型.文件大小以及 ...

  4. class10_Frame 框架

    最终运行效果图(程序见序号2):   #!/usr/bin/env python # -*- coding:utf-8 -*- # ---------------------------------- ...

  5. OSI七层网络模型分别是哪七层?各运行那些协议?

    本文摘自:https://blog.csdn.net/JeremyZJM/article/details/78184775 应用层 DHCP · DNS · FTP · Gopher · HTTP · ...

  6. Rabbit MQ 基础入门

    Rabbit MQ 学习(一)基础入门 简介 RabbitMQ 简介 为什么选择 RabbitMQ RabbitMQ 的模型架构是什么? AMQP 协议是什么? AMQP 常用命令 概念 生产者和消费 ...

  7. 如何查看jdk版本和路径

    cmd进入命令提示符,查看jdk版本,输入java -version;查看jdk路径 ,输入set java home.,这个也是默认路径

  8. 第六天 函数与lambda表达式、函数应用与工具

    一.函数 1.匹配 位置匹配 def func(a,b,c): print(a,b,c) func(c=1,a=2,b=3) 2 3 1 def func(a, b=2, c=3): print(a, ...

  9. 解决WIN8输入法的问题,Ctrl+空格,Ctrl+Shift,切换问题

    在WIN8中,我们曾经熟悉的的Ctrl+空格和Ctrl+Shift消失了,取而导致的是WIN+空格. 在这里先简单解释一下WIN8的输入法结构: 在WIN7以前的输入法中,输入法采用了平行目录的结构, ...

  10. abstract类中method

    一.abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized? 都不可以,因为abstract申明的方法是要求子类去实现的,abstrac ...