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实现的生成自我描述脚本分享(很有意思的程序)
Jul 18 Python
python基础教程之基本数据类型和变量声明介绍
Aug 29 Python
Python功能键的读取方法
May 28 Python
通过5个知识点轻松搞定Python的作用域
Sep 09 Python
Python实现连接postgresql数据库的方法分析
Dec 27 Python
浅谈python可视化包Bokeh
Feb 07 Python
matplotlib 纵坐标轴显示数据值的实例
May 25 Python
python 利用pywifi模块实现连接网络破解wifi密码实时监控网络
Sep 16 Python
Pytorch 定义MyDatasets实现多通道分别输入不同数据方式
Jan 15 Python
python使用pyecharts库画地图数据可视化的实现
Mar 25 Python
Python figure参数及subplot子图绘制代码
Apr 18 Python
python爬虫爬取淘宝商品比价(附淘宝反爬虫机制解决小办法)
Dec 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为表单获取的URL 地址预设 http 字符串函数代码
2010/05/26 PHP
PHP与MySQL开发的8个技巧小结
2010/12/17 PHP
php array_push()数组函数:将一个或多个单元压入数组的末尾(入栈)
2011/07/12 PHP
php从csv文件读取数据并输出到网页的方法
2015/03/14 PHP
Laravel 添加多语言提示信息的方法
2019/09/29 PHP
jquery学习笔记二 实现可编辑的表格
2010/04/09 Javascript
DOM Scripting中的图片切换[兼容Firefox]
2010/06/12 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件
2011/12/21 Javascript
jquery实现的可隐藏重现的靠边悬浮层实例代码
2013/05/27 Javascript
js实现网页倒计时、网站已运行时间功能的代码3例
2014/04/14 Javascript
JS获取图片lowsrc属性的方法
2015/04/01 Javascript
JS替换字符串中空格方法
2015/04/17 Javascript
学习vue.js表单控件绑定操作
2016/12/05 Javascript
Angular.js实现多个checkbox只能选择一个的方法示例
2017/02/24 Javascript
nodejs搭建本地服务器并访问文件的方法
2017/03/03 NodeJs
Angular2平滑升级到Angular4的步骤详解
2017/03/29 Javascript
详解Vue iview IE浏览器不兼容报错(Iview Bable polyfill)
2019/01/07 Javascript
JavaScript数据结构之栈实例用法
2019/01/18 Javascript
express.js中间件说明详解
2019/03/19 Javascript
node.js实现带进度条的多文件上传
2020/03/27 Javascript
探究一道价值25k的蚂蚁金服异步串行面试题
2020/08/21 Javascript
[02:51]DOTA2 2015国际邀请赛中国区预选赛第一日战报
2015/05/27 DOTA
Python中类型关系和继承关系实例详解
2015/05/25 Python
Python实现将绝对URL替换成相对URL的方法
2015/06/28 Python
Python实现删除当前目录下除当前脚本以外的文件和文件夹实例
2015/07/27 Python
Python决策树分类算法学习
2017/12/22 Python
python实现对任意大小图片均匀切割的示例
2018/12/05 Python
Python 转换RGB颜色值的示例代码
2019/10/13 Python
TensorFlow的reshape操作 tf.reshape的实现
2020/04/19 Python
Python程序慢的重要原因
2020/09/04 Python
HTML5 window/iframe跨域传递消息 API介绍
2013/08/26 HTML / CSS
项目建议书格式
2014/03/12 职场文书
个人委托书格式
2014/04/04 职场文书
设计专业自荐信
2014/06/19 职场文书
迟到检讨书范文
2015/01/27 职场文书
2015庆祝七一建党节94周年活动总结
2015/03/20 职场文书