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使用PyGreSQL操作PostgreSQL数据库教程
Jul 30 Python
用python删除java文件头上版权信息的方法
Jul 31 Python
python实现逆波兰计算表达式实例详解
May 06 Python
Python常用内置模块之xml模块(详解)
May 23 Python
Python3解决棋盘覆盖问题的方法示例
Dec 07 Python
python3实现跳一跳点击跳跃
Jan 08 Python
详解python中的线程与线程池
May 10 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
May 27 Python
Django之使用celery和NGINX生成静态页面实现性能优化
Oct 08 Python
Python如何给你的程序做性能测试
Jul 29 Python
Python爬虫基于lxml解决数据编码乱码问题
Jul 31 Python
详解Python3.8+PyQt5+pyqt5-tools+Pycharm配置详细教程
Nov 02 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
PHP删除数组中的特定元素的代码
2012/06/28 PHP
Yii2中YiiBase自动加载类、引用文件方法分析(autoload)
2016/07/25 PHP
PHP堆栈调试操作简单示例
2018/06/15 PHP
php正则表达式使用方法整理集合
2020/01/31 PHP
关于firefox的ElementTraversal 接口 使用说明
2010/11/11 Javascript
js异步加载的三种解决方案
2013/03/04 Javascript
js中如何把字符串转化为对象、数组示例代码
2013/07/17 Javascript
文本框回车提交与禁止提交示例
2013/09/27 Javascript
javascript相等运算符与等同运算符详细介绍
2013/11/09 Javascript
javascript使用call调用微信API
2014/12/15 Javascript
js只执行1次的函数示例
2016/07/20 Javascript
微信小程序--组件(swiper)详细介绍
2017/06/13 Javascript
解决vue.js在编写过程中出现空格不规范报错的问题
2017/09/20 Javascript
Javascript中的作用域及块级作用域
2017/12/08 Javascript
Mint-UI时间组件起始时间问题及时间插件使用
2018/08/20 Javascript
vue富文本编辑器组件vue-quill-edit使用教程
2018/09/21 Javascript
用npm安装vue和vue-cli,并使用webpack创建项目的方法
2018/09/28 Javascript
JavaScript实现缓动动画
2020/11/25 Javascript
[42:20]2014 DOTA2华西杯精英邀请赛5 24 DK VS NewBee
2014/05/25 DOTA
linux下安装easy_install的方法
2013/02/10 Python
Python selenium文件上传方法汇总
2020/11/19 Python
Python中模块pymysql查询结果后如何获取字段列表
2017/06/05 Python
人脸识别经典算法一 特征脸方法(Eigenface)
2018/03/13 Python
python单例模式的多种实现方法
2019/07/26 Python
Python 共享变量加锁、释放详解
2019/08/28 Python
Python 实现Numpy中找出array中最大值所对应的行和列
2019/11/26 Python
在pytorch中动态调整优化器的学习率方式
2020/06/24 Python
惠普加拿大在线商店:HP加拿大
2017/09/15 全球购物
如何删除一个表里面的重复行
2013/07/13 面试题
下列程序在32位linux或unix中的结果是什么
2014/03/25 面试题
GWT (Google Web Toolkit)有哪些主要的原件组成?
2015/06/08 面试题
电子商务优秀毕业生求职信
2014/07/11 职场文书
如何写早恋检讨书
2014/09/10 职场文书
党的群众路线教育实践活动对照检查材料范文
2014/09/24 职场文书
争做文明公民倡议书
2019/06/24 职场文书
新手必备之MySQL msi版本下载安装图文详细教程
2021/05/21 MySQL