opencv python图像梯度实例详解
作者:wbytts 发布时间:2021-05-17 23:26:30
标签:opencv,python,图像,梯度
这篇文章主要介绍了opencv python图像梯度实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
一阶导数与Soble算子
二阶导数与拉普拉斯算子
图像边缘:
Soble算子:
二阶导数:
拉普拉斯算子:
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()
来源:https://www.cnblogs.com/wbyixx/p/12244481.html


猜你喜欢
- 对于js中eval()函数的理解和写一个函数trim()去掉字符串左右空格。 trim()是参照了jquery的源码,你可以放心使用。 对于
- 网络下载的python代码,版本参差,从python2.x迁移python3.x的过程中,存在print语法问题,即python2.x中pr
- 简单的header import urllib2request = urllib2.Request('http://example.
- 在后台处理数据时,前台页面同时计数显示进度条Proess Bar使用了layer来显示用法:1。引用<script lang
- 阅读Chapter 1 清单Chapter 2 标题总览:不但所有网页都需要有标题,而且如果标记正确的话,他们能为网页设计和易用性
- 本文实例讲述了Python针对给定列表中元素进行翻转操作的方法。分享给大家供大家参考,具体如下:题目给定一列表,翻转其中的元素,倒序输出做法
- 问题问题是这样的,要把一个数组存到tfrecord中,然后读取a = np.array([[0, 54, 91, 153, 177,1],
- 我就废话不多说了,直接上代码吧!#!/usr/bin/env python# coding:UTF-8"""@
- 本文实例讲述了python随机生成指定长度密码的方法。分享给大家供大家参考。具体如下:下面的python代码通过对各种字符进行随机组合生成一
- JupyterLab 是 Jupyter 主打的最新数据科学生产工具,某种意义上,它的出现是为了取代Jupyter Notebook。它作为
- WEB标准化之前的互联网是TABLE布局的天下,但随着互联网的高速发展,TABLE布局已经不能满足千变万化的页面所来来的更新压力和服务器压力
- with语句会设置一个临时的上下文,交给上下文管理器对象控制,并且负责清理上下问题。这样做能避免错误并减少样板代码,因此API能更安全,更易
- 前言Python的异常处理能力非常强大,但是用不好也会带来负面的影响。我平时写程序的过程中也喜欢使用异常,虽然采取防御性的方式编码会更好,但
- 一、cache介绍由于Django是 * 站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使
- 因为编写了一个Python程序,密集的操作了一个Mysql库,之前数据量不大时,没发现很慢,后来越来越慢,以为只是数据量大了的原因,但是后来
- 一、问题描述define function,calculate the input parameters and return the re
- 在最近工作中,有一个需求,需要做一个表格,并且对该表格右键弹出菜单支持增删改,这里做下总结,功能截图如下:首先定义菜单结构<!-- 菜
- 一、re.compile 函数作用:compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match()
- 前言自从学过存储过程后,就再也没有碰过存储过程,这是毕业后写的第一个存储过程。因为项目里设备的种类比较多,分别存在不同的数据表中,java中
- 前言Python爬虫要经历爬虫、爬虫被限制、爬虫反限制的过程。当然后续还要网页爬虫限制优化,爬虫再反限制的一系列道高一尺魔高一丈的过程。爬虫