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入门及进阶笔记 Python 内置函数小结
Aug 09 Python
Python中装饰器高级用法详解
Dec 25 Python
Tensorflow的可视化工具Tensorboard的初步使用详解
Feb 11 Python
python绘制简单彩虹图
Nov 19 Python
python UDP(udp)协议发送和接收的实例
Jul 22 Python
python flask几分钟实现web服务的例子
Jul 26 Python
python中时间转换datetime和pd.to_datetime详析
Aug 11 Python
python-tornado的接口用swagger进行包装的实例
Aug 29 Python
Python 实现取多维数组第n维的前几位
Nov 26 Python
python的Jenkins接口调用方式
May 12 Python
详解Python模块化编程与装饰器
Jan 16 Python
对pytorch中x = x.view(x.size(0), -1) 的理解说明
Mar 03 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 缓存函数代码
2008/08/27 PHP
用穿越火线快速入门php面向对象
2012/02/22 PHP
领悟php接口中interface存在的意义
2013/06/27 PHP
深入了解PHP中的Array数组和foreach
2016/11/06 PHP
Yii框架扩展CGridView增加导出CSV功能的方法
2017/05/24 PHP
使用javascript访问XML数据的实例
2006/12/27 Javascript
html文件中jquery与velocity变量中的$冲突的解决方法
2013/11/01 Javascript
js+css实现导航效果实例
2015/02/10 Javascript
JavaScript使用指针操作实现约瑟夫问题实例
2015/04/07 Javascript
浅析2种JavaScript继承方式
2015/12/04 Javascript
JS简单生成两个数字之间随机数的方法
2016/08/03 Javascript
web 前端常用组件之Layer弹出层组件
2016/09/22 Javascript
jQuery上传插件webupload使用方法
2017/08/01 jQuery
WebStorm ES6 语法支持设置&babel使用及自动编译(详解)
2017/09/08 Javascript
详解Node.js模板引擎Jade入门
2018/01/19 Javascript
jQuery实现的卷帘门滑入滑出效果【案例】
2019/02/18 jQuery
七行JSON代码把你的网站变成移动应用过程详解
2019/07/09 Javascript
nodeJS与MySQL实现分页数据以及倒序数据
2020/06/05 NodeJs
Vue页面渲染中key的应用实例教程
2021/01/12 Vue.js
[00:43]拉比克至宝魔导师密钥展示
2018/12/20 DOTA
在Python中通过threading模块定义和调用线程的方法
2016/07/12 Python
Python识别快递条形码及Tesseract-OCR使用详解
2019/07/15 Python
python语言线程标准库threading.local解读总结
2019/11/10 Python
简单了解python数组的基本操作
2019/11/26 Python
Pytorch之Variable的用法
2019/12/31 Python
linux centos 7.x 安装 python3.x 替换 python2.x的过程解析
2020/12/14 Python
three.js模拟实现太阳系行星体系功能
2019/09/03 HTML / CSS
IFCHIC台湾:欧美国际设计师品牌
2019/05/18 全球购物
物业电工岗位职责
2013/11/20 职场文书
年度考核自我鉴定
2014/02/02 职场文书
市场营销大学生职业规划书
2014/02/25 职场文书
美术毕业生求职信
2014/02/25 职场文书
跑吧孩子观后感
2015/06/10 职场文书
Pytest中skip skipif跳过用例详解
2021/06/30 Python
正则表达式拆分url实例代码
2022/02/24 Java/Android
淡雅古典唯美少女娇媚宁静迷人写真
2022/03/21 杂记