opencv python图像梯度实例详解


Posted in Python onFebruary 04, 2020

这篇文章主要介绍了opencv python图像梯度实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

一阶导数与Soble算子

二阶导数与拉普拉斯算子

图像边缘:

opencv python图像梯度实例详解

Soble算子:

opencv python图像梯度实例详解

二阶导数:

opencv python图像梯度实例详解

拉普拉斯算子:

opencv python图像梯度实例详解

import cv2 as cv
import numpy as np


# 图像梯度(由x,y方向上的偏导数和偏移构成),有一阶导数(sobel算子)和二阶导数(Laplace算子)
# 用于求解图像边缘,一阶的极大值,二阶的零点
# 一阶偏导在图像中为一阶差分,再变成算子(即权值)与图像像素值乘积相加,二阶同理
def sobel_demo(image):
  grad_x = cv.Sobel(image, cv.CV_32F, 1, 0) # 采用Scharr边缘更突出
  grad_y = cv.Sobel(image, cv.CV_32F, 0, 1)

  gradx = cv.convertScaleAbs(grad_x) # 由于算完的图像有正有负,所以对其取绝对值
  grady = cv.convertScaleAbs(grad_y)

  # 计算两个图像的权值和,dst = src1*alpha + src2*beta + gamma
  gradxy = cv.addWeighted(gradx, 0.5, grady, 0.5, 0)

  cv.imshow("gradx", gradx)
  cv.imshow("grady", grady)
  cv.imshow("gradient", gradxy)


def laplace_demo(image): # 二阶导数,边缘更细
  dst = cv.Laplacian(image,cv.CV_32F)
  lpls = cv.convertScaleAbs(dst)
  cv.imshow("laplace_demo", lpls)


def custom_laplace(image):
  # 以下算子与上面的Laplace_demo()是一样的,增强采用np.array([[1, 1, 1], [1, -8, 1], [1, 1, 1]])
  kernel = np.array([[1, 1, 1], [1, -8, 1], [1, 1, 1]])
  dst = cv.filter2D(image, cv.CV_32F, kernel=kernel)
  lpls = cv.convertScaleAbs(dst)
  cv.imshow("custom_laplace", lpls)


def main():
  src = cv.imread("../images/lena.jpg")
  cv.imshow("lena",src)
  # sobel_demo(src)
  laplace_demo(src)
  custom_laplace(src)
  cv.waitKey(0) # 等有键输入或者1000ms后自动将窗口消除,0表示只用键输入结束窗口
  cv.destroyAllWindows() # 关闭所有窗口


if __name__ == '__main__':
  main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用socket进行简单网络连接的方法
Apr 29 Python
深入浅析python with语句简介
Apr 11 Python
python生成密码字典的方法
Jul 06 Python
用pycharm开发django项目示例代码
Oct 24 Python
Python3实现获取图片文字里中文的方法分析
Dec 13 Python
使用Python OpenCV为CNN增加图像样本的实现
Jun 10 Python
PyQt5通信机制 信号与槽详解
Aug 07 Python
Python3从零开始搭建一个语音对话机器人的实现
Aug 23 Python
Numpy对数组的操作:创建、变形(升降维等)、计算、取值、复制、分割、合并
Aug 28 Python
Python @property使用方法解析
Sep 17 Python
Tensorflow矩阵运算实例(矩阵相乘,点乘,行/列累加)
Feb 05 Python
Python3.9.1中使用match方法详解
Feb 08 Python
TensorFlow设置日志级别的几种方式小结
Feb 04 #Python
Python 实现加密过的PDF文件转WORD格式
Feb 04 #Python
解决tensorflow打印tensor有省略号的问题
Feb 04 #Python
对Tensorflow中tensorboard日志的生成与显示详解
Feb 04 #Python
在 Python 中接管键盘中断信号的实现方法
Feb 04 #Python
在TensorFlow中屏蔽warning的方式
Feb 04 #Python
Python和Anaconda和Pycharm安装教程图文详解
Feb 04 #Python
You might like
JavaScript实现滚动栏效果的方法
2015/04/27 PHP
php实现处理输入转义字符的代码
2015/11/08 PHP
浅析Yii2 gridview实现批量删除教程
2016/04/22 PHP
php实现压缩合并js的方法【附demo源码下载】
2016/09/22 PHP
PhpStorm terminal无法输入命令的解决方法
2016/10/09 PHP
PHP函数按引用传递参数及函数可选参数用法示例
2018/06/04 PHP
xml 封装与解析(javascript和C#中)
2009/07/26 Javascript
jquery下操作HTML控件的实现代码
2010/01/12 Javascript
JQuery团队打造的javascript单元测试工具QUnit介绍
2010/02/26 Javascript
基本jquery的控制tabs打开的数量的代码
2010/10/17 Javascript
js获取html页面节点方法(递归方式)
2013/12/13 Javascript
js 剪切板应用clipboardData详细解析
2013/12/17 Javascript
JS解析XML实例分析
2015/01/30 Javascript
浅谈Jquery为元素绑定事件
2015/04/27 Javascript
AngularJS中$interval的用法详解
2016/02/02 Javascript
浅谈jQuery绑定事件会叠加的解决方法和心得总结
2016/10/26 Javascript
AngularJS+Bootstrap实现多文件上传与管理
2016/11/08 Javascript
微信小程序 flex实现导航实例详解
2017/04/26 Javascript
基于Vue 撸一个指令实现拖拽功能
2019/10/09 Javascript
javascript实现智能手环时间显示
2020/09/18 Javascript
js+html+css实现手动轮播和自动轮播
2020/12/30 Javascript
Python构造函数及解构函数介绍
2015/02/26 Python
在Heroku云平台上部署Python的Django框架的教程
2015/04/20 Python
Python3.6 Schedule模块定时任务(实例讲解)
2017/11/09 Python
Python初学者需要注意的事项小结(python2与python3)
2018/09/26 Python
Pycharm无法使用已经安装Selenium的解决方法
2018/10/13 Python
Python 中判断列表是否为空的方法
2019/11/24 Python
Lookfantastic台湾:英国彩妆美发保养购物网
2018/03/26 全球购物
Ejb技术面试题
2015/04/29 面试题
校园之声广播稿
2014/01/31 职场文书
员工入职担保书范文
2014/04/01 职场文书
社区节水倡议书
2015/04/29 职场文书
2015年小学数学教师个人工作总结
2015/05/25 职场文书
党小组鉴定意见
2015/06/02 职场文书
Python离线安装openpyxl模块的步骤
2021/03/30 Python
CSS3 制作精美的定价表
2021/04/06 HTML / CSS