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实现在matplotlib中两个坐标轴之间画一条直线光标的方法
May 20 Python
分析Python中设计模式之Decorator装饰器模式的要点
Mar 02 Python
python在ubuntu中的几种安装方法(小结)
Dec 08 Python
tensorflow 加载部分变量的实例讲解
Jul 27 Python
Python socket 套接字实现通信详解
Aug 27 Python
你还在@微信官方?聊聊Python生成你想要的微信头像
Sep 25 Python
python 插入日期数据到Oracle实例
Mar 02 Python
使用pyecharts1.7进行简单的可视化大全
May 17 Python
如何实现更换Jupyter Notebook内核Python版本
May 18 Python
浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点
Jun 08 Python
Django数据模型中on_delete使用详解
Nov 30 Python
Python lxml库的简单介绍及基本使用讲解
Dec 22 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代码的53条建议
2008/03/27 PHP
php购物网站支付paypal使用方法
2010/11/28 PHP
利用中国天气预报接口实现简单天气预报
2014/01/20 PHP
php中array_column函数简单实现方法
2016/07/11 PHP
php读取XML的常见方法实例总结
2017/04/25 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
利用JQuery+EasyDrag 实现弹出可拖动的Div,同时向Div传值,然后返回Div选中的值
2009/10/24 Javascript
添加JavaScript重载函数的辅助方法2
2010/07/04 Javascript
JS中的数组的sort方法使用示例
2014/01/22 Javascript
登陆成功后自动计算秒数执行跳转
2014/01/23 Javascript
jQuery:delegate中select()不起作用的解决方法(实例讲解)
2014/01/26 Javascript
vue.js中mint-ui框架的使用方法
2017/05/12 Javascript
产制造追溯系统之通过微信小程序实现移动端报表平台
2019/06/03 Javascript
jQuery Ajax async=>false异步改为同步时,解决导致浏览器假死的问题
2019/07/22 jQuery
JavaScript 声明私有变量的两种方式
2021/02/05 Javascript
用Python进行TCP网络编程的教程
2015/04/29 Python
python基础教程之五种数据类型详解
2017/01/12 Python
python脚本替换指定行实现步骤
2017/07/11 Python
浅谈numpy数组的几种排序方式
2017/12/15 Python
Python设计模式之代理模式实例详解
2019/01/19 Python
Python 实现数据结构-循环队列的操作方法
2019/07/17 Python
python实现爬虫抓取小说功能示例【抓取金庸小说】
2019/08/09 Python
Python实现上下文管理器的方法
2020/08/07 Python
python中HTMLParser模块知识点总结
2021/01/25 Python
css3隔行变换色实现示例
2014/02/19 HTML / CSS
html+css实现自定义图片上传按钮功能
2019/09/04 HTML / CSS
英国最大的在线快递公司之一:ParcelHero
2019/11/04 全球购物
查环查孕证明
2014/01/10 职场文书
公司前台辞职报告
2014/01/19 职场文书
廉洁校园实施方案
2014/05/25 职场文书
80后婚前协议书范本
2014/10/24 职场文书
民事辩护词范文
2015/05/21 职场文书
六年级语文教学反思
2016/03/03 职场文书
CSS3实现列表无限滚动/轮播效果
2021/06/23 HTML / CSS
如何用vue实现网页截图你知道吗
2021/11/17 Vue.js
拙作再改《我的收音机情缘》
2022/04/05 无线电