OpenCV自学笔记十三:图像梯度

目录

1、Sobel算子及函数使用

2、Scharr算子及函数使用

3、Lapiacian算子及函数使用


1、Sobel算子及函数使用

Sobel算子是一种常用于图像边缘检测的算法,它利用了图像中像素灰度值的变化来寻找边缘。在OpenCV中,可以使用函数cv2.Sobel()来实现Sobel算子的功能。

下面是一个示例代码,展示了如何使用Sobel算子进行图像边缘检测:

import cv2import numpy as np# 读取图像img = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)# 对图像应用Sobel算子sobelx = cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=3)sobely = cv2.Sobel(img, cv2.CV_64F, 0, 1, ksize=3)# 将结果转换为无符号8位整型sobelx = cv2.convertScaleAbs(sobelx)sobely = cv2.convertScaleAbs(sobely)# 合并x和y方向的梯度gradient = cv2.addWeighted(sobelx, 0.5, sobely, 0.5, 0)# 显示结果cv2.imshow("Sobel", gradient)cv2.waitKey(0)cv2.destroyAllWindows()

在这个示例中,我们首先读取一张灰度图像,然后分别应用Sobel算子的x和y方向的核,通过`cv2.Sobel()`函数实现。第二个参数`cv2.CV_64F`指定了输出图像的深度。ksize参数指定了Sobel算子的大小,这里设为3表示使用3x3的核。

最后,我们将x和y方向的梯度图像合并起来,并通过`cv2.addWeighted()`函数进行加权融合。最后,将结果通过`cv2.imshow()`显示出来。

需要注意的是,Sobel算子对噪声比较敏感,所以在应用之前,可以先对图像进行平滑处理,例如使用高斯模糊 (`cv2.GaussianBlur()`) 函数。

2、Scharr算子及函数使用

Scharr算子是一种常用于图像边缘检测的算法,它与Sobel算子类似,但具有更好的性能。在OpenCV中,可以使用函数cv2.Scharr()来实现Scharr算子的功能。

下面是一个示例代码,展示了如何使用Scharr算子进行图像边缘检测:

import cv2import numpy as np# 读取图像img = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)# 对图像应用Scharr算子scharrx = cv2.Scharr(img, cv2.CV_64F, 1, 0)scharry = cv2.Scharr(img, cv2.CV_64F, 0, 1)# 将结果转换为无符号8位整型scharrx = cv2.convertScaleAbs(scharrx)scharry = cv2.convertScaleAbs(scharry)# 合并x和y方向的梯度gradient = cv2.addWeighted(scharrx, 0.5, scharry, 0.5, 0)# 显示结果cv2.imshow("Scharr", gradient)cv2.waitKey(0)cv2.destroyAllWindows()

在这个示例中,我们首先读取一张灰度图像,然后分别应用Scharr算子的x和y方向的核,通过`cv2.Scharr()`函数实现。第二个参数`cv2.CV_64F`指定了输出图像的深度。

接着,将x和y方向的梯度图像通过`cv2.convertScaleAbs()`函数转换为无符号8位整型。

最后,将x和y方向的梯度图像合并起来,并通过`cv2.addWeighted()`函数进行加权融合。最后,将结果通过`cv2.imshow()`显示出来。

与Sobel算子类似,Scharr算子也对噪声比较敏感,所以在应用之前,可以先对图像进行平滑处理,例如使用高斯模糊 (`cv2.GaussianBlur()`) 函数。

3、Lapiacian算子及函数使用

Laplacian(拉普拉斯)算子是一种常用于图像边缘检测的算法,它可以提取图像中的二阶导数信息,从而寻找图像中的边缘。在OpenCV中,可以使用函数cv2.Laplacian()来实现Laplacian算子的功能。下面是一个示例代码,展示了如何使用Laplacian算子进行图像边缘检测:

import cv2
import numpy as np# 读取图像
img = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)# 对图像应用Laplacian算子
laplacian = cv2.Laplacian(img, cv2.CV_64F)# 将结果转换为无符号8位整型
laplacian = cv2.convertScaleAbs(laplacian)# 显示结果
cv2.imshow("Laplacian", laplacian)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这个示例中,我们首先读取了一张灰度图像,然后应用Laplacian算子,通过`cv2.Laplacian()`函数实现。第二个参数`cv2.CV_64F`指定了输出图像的深度。

接下来,将Laplacian算子的结果通过`cv2.convertScaleAbs()`函数转换为无符号8位整型。

最后,使用`cv2.imshow()`显示结果。

需要注意的是,Laplacian算子对噪声比较敏感,因此在应用之前,可以先对图像进行平滑处理,例如使用高斯模糊(`cv2.GaussianBlur()`)函数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/86276.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是CORS(跨源资源共享)?如何解决前端中的CORS问题?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ CORS(跨源资源共享)⭐ 解决前端中的CORS问题的方法⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为…

HCQ1-1300-D故障笔记

常用查错网址: SMC_ERROR (ENUM) 删除 Web

9.19号作业

2> 完成文本编辑器的保存工作 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QFontDialog> #include <QFont> #include <QMessageBox> #include <QDebug> #include <QColorDialog> #include <QColor&g…

AJAX的奇妙之旅(1)基础知识

一、简介 AJAX&#xff08;Asynchronous JavaScript and XML&#xff09;是一种使用现有标准的新方法。它是一种用于创建快速动态网页的技术。AJAX 最大的优点是在不重新加载整个页面的情况下&#xff0c;可以与服务器交换数据并更新部分网页内容。AJAX 不需要任何浏览器插件&a…

golang 自动生成文件头

安装koroFileHeader控件 打开首选项&#xff0c;进入设置&#xff0c;配置文件头信息"fileheader.customMade": {"Author": "lmy","Date": "Do not edit", // 文件创建时间(不变)// 文件最后编辑者"LastEditors"…

R语言贝叶斯非参数模型:密度估计、非参数化随机效应META分析心肌梗死数据...

全文链接&#xff1a;http://tecdat.cn/?p23785 最近&#xff0c;我们使用贝叶斯非参数&#xff08;BNP&#xff09;混合模型进行马尔科夫链蒙特卡洛&#xff08;MCMC&#xff09;推断&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 概述 相关视频 在这篇文…

世界前沿技术发展报告2023《世界信息技术发展报告》(一)世界信息技术及产业发展重要动向

&#xff08;一&#xff09;世界信息技术及产业发展重要动向 1. 概述2. 半导体技术水平持续进步&#xff0c;行业内部开始新一轮调整2.1 全球主要经济体加强半导体技术能力建设&#xff0c;推动厂商扩产2.2 先进制程技术持续发展&#xff0c;先进封装技术崭露头角2.3 消费电子半…

【算法练习Day1】二分查找移除元素

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;练题 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 二分查找解决方法一&…

ChatGPT WPS AI 一键核对两表数据差异

业务需求,找出两个表中不相同的内容。如下图: 像这样的表格中,要找出不同的值,手动核对效率不高。 现在我们有了ChatGPT,可以由人工智能来完成这一操作,高效,快速,准确定位差异值。 指令:请找出A1:G14 单元格区域和I1:O14单元格区域的不相同部分,将两部数据区域不相…

golang后端开发非常成熟好用的总结的几个高频使用库快速实现开发

golang后端开发非常成熟好用的总结的几个高频使用库快速实现开发。 随着时间的推移&#xff0c;语言爱好者已经构建和共享了许多 Go 框架和库。这些包执行不同的功能&#xff0c;从开发微服务到制作 discord 机器人&#xff0c;一直到构建 Web 应用程序&#xff01;在本文中&a…

记一次hyperf框架封装swoole自定义进程

背景 公司准备引入swoole和rabbitmq来处理公司业务。因此&#xff0c;我引入hyperf框架&#xff0c;想用swoole的多进程来实现。 自定义启动服务封装 <?php /*** 进程启动服务【manager】*/ declare(strict_types1);namespace App\Command;use Swoole; use Swoole\Proce…

C语言每日一题(10):无人生还

文章主题&#xff1a;无人生还&#x1f525;所属专栏&#xff1a;C语言每日一题&#x1f4d7;作者简介&#xff1a;每天不定时更新C语言的小白一枚&#xff0c;记录分享自己每天的所思所想&#x1f604;&#x1f3b6;个人主页&#xff1a;[₽]的个人主页&#x1f3c4;&#x1f…

Weblogic反序列化漏洞(CVE-2018-2628/CVE-2023-21839复现)

内容目录 Weblogic反序列化漏洞(CVE-2018-2628/CVE-2023-21839)weblogic中间件CVE-2018-2628漏洞描述影响版本漏洞复现修复方案 CVE-2023-21839漏洞描述影响版本漏洞复现修复方案 Weblogic反序列化漏洞(CVE-2018-2628/CVE-2023-21839) weblogic中间件 WebLogic是美国Oracle公司…

在给应用ASO优化时要注意些什么

应用名称是搜索引擎优化和转化率优化非常重要的元素。用户在搜索结果页面中看到我们的应用程序&#xff0c;这是他们决定是否想要更多地了解我们应用的地方。当用户已经在查看产品页面时&#xff0c;应用程序名称也会影响转化率&#xff0c;如果列表元数据有吸引力&#xff0c;…

代码随想录二刷day36

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、力扣435. 无重叠区间二、力扣763. 划分字母区间三、力扣56. 合并区间 前言 一、力扣435. 无重叠区间 class Solution {public int eraseOverlapIntervals(…

异步回调

Future 设计的初衷&#xff1a;对将来的某个事件的结果进行建模 package com.kuang.future;import com.kuang.pc.C;import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.uti…

静态路由与默认路由配置

实验原理&#xff1a; 路由分类 &#xff08;1&#xff09;根据目的网络的不同&#xff0c;路由可以划分为&#xff1a; 特定网络路由&#xff1a;目的网络为目的主机所在网络的IP地址&#xff0c;其子网掩码表示的前缀长度为32位&#xff08;对于IPv4地址&#xff09;&…

priority_queue 模拟与用法

priority_queue 用法 priority_queue priority_queue 模拟 #include <vector> namespace sjy {//仿函数 1template <typename T>class Less{public:bool operator()(const T& x, const T& y){return x < y;}};//仿函数 2template <typename T>…

一些常见的算法

常见算法有很多种&#xff0c;以下列举了一些常见的算法&#xff1a; 堆排序算法&#xff1a;是一种利用堆这种数据结构所设计的一种排序算法。哈希算法&#xff1a;哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值&#xff0c;这个小的二进制值称为哈希值&#…

stm32_标准库_中断_按键点灯|蜂鸣器

配置流程 需要对AFIO、EXTI、NVIC、GPIOB进行配置形成通路将中断连接至CPU APB2总线连接的寄存器 LED灯代码 #include "stm32f10x.h" // Device header #include "Delay.h"GPIO_InitTypeDef GIPO_InitStruct;//结构体配置GPIO EXTI_InitTypeDef EXTI_…