OpenCV——Scharr边缘检测

目录

  • 一、Scharr算法
    • 1、算法概述
    • 2、主要函数
  • 二、C++代码
  • 三、python代码
  • 四、结果展示
    • 1、灰度图
    • 2、X方向一阶边缘
    • 2、Y方向一阶边缘
    • 3、整幅图像的一阶边缘
  • 五、相关链接

在这里插入图片描述

OpenCV——Scharr边缘检测由CSDN点云侠原创,爬虫自重。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。

一、Scharr算法

1、算法概述

   Scharr边缘检测算法是对Sobel算子差异性的增强,因此两者在检测图像边缘的原理和使用方式上相同。Scharr算子的边缘检测滤波尺寸为3x3,因此也可称其为Scharr滤波器。可以通过将滤波器中的权重系数放大来增大像素见的差异,Scharr算子就是采用这种思想,其在X方向一阶Scharr边缘检测算子为:
[ − 3 0 3 − 10 0 10 − 3 0 3 ] (1) \left[ \begin{matrix} -3 & 0 & 3\\ -10 & 0 & 10 \\ -3 & 0 & 3 \end{matrix} \right] \tag{1} 31030003103 (1)
Y方向一阶Scharr边缘检测算子为:
[ − 3 10 − 3 0 0 0 3 10 3 ] (2) \left[ \begin{matrix} -3 & 10 & -3\\ 0 & 0 & 0 \\ 3 & 10 & 3 \end{matrix} \right] \tag{2} 30310010303 (2)

2、主要函数

void Scharr( InputArray src, OutputArray dst, int ddepth,int dx, int dy, double scale = 1, double delta = 0,int borderType = BORDER_DEFAULT )
  • src:传入的图像
  • ddepth:图像的深度,可以为-1、CV_16S、CV_32F、CV_64F。
  • dxdy:指的是求导的阶数,0表示这个方向上没有求导,所填的数一般为0、1、2。
  • scale:计算可选比例因子,默认值1 。
  • delta:加到输出像素的偏值,默认为0 。
  • borderType:边界类型,默认值BORDER_DEFAULT。

二、C++代码

#include <opencv2\opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;int main()
{//读取图像,黑白图像边缘检测结果较为明显Mat img = imread("2.jpg", IMREAD_ANYDEPTH);if (img.empty()){cout << "请确认图像文件名称是否正确" << endl;return -1;}Mat resultX, resultY, resultXY;//X方向一阶边缘Scharr(img, resultX, CV_16S, 1, 0);convertScaleAbs(resultX, resultX);//Y方向一阶边缘Scharr(img, resultY, CV_16S, 0, 1);convertScaleAbs(resultY, resultY);//整幅图像的一阶边缘resultXY = resultX + resultY;//显示图像imshow("resultX", resultX);imshow("resultY", resultY);imshow("resultXY", resultXY);waitKey(0);return 0;
}

三、python代码

import cv2img = cv2.imread("2.jpg")
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# -------------------Scharr边缘检测------------------------
x = cv2.Scharr(gray_img, cv2.CV_16S, 1, 0)
y = cv2.Scharr(gray_img, cv2.CV_16S, 0, 1)
# cv2.convertScaleAbs(src[, dst[, alpha[, beta]]])
# 可选参数alpha是伸缩系数,beta是加到结果上的一个值,结果返回uint类型的图像
Scharr_absX = cv2.convertScaleAbs(x)  # convert 转换  scale 缩放
Scharr_absY = cv2.convertScaleAbs(y)
result = cv2.addWeighted(Scharr_absX, 0.5, Scharr_absY, 0.5, 0)
# ----------------------显示结果----------------------------
cv2.imshow('origin_img', img)
cv2.imshow('img', gray_img)
cv2.imshow('Scharr_absX', Scharr_absX)
cv2.imshow('Scharr_absY', Scharr_absY)
cv2.imshow('result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

四、结果展示

1、灰度图

在这里插入图片描述

2、X方向一阶边缘

在这里插入图片描述

2、Y方向一阶边缘

在这里插入图片描述

3、整幅图像的一阶边缘

在这里插入图片描述

五、相关链接

[1] Scharr(边缘提取)

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

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

相关文章

MODNet 剪枝再思考: 优化计算量的实验历程分享

目录 1 写在前面 2 模型分析 3 遇到问题 4 探索实验一 4.1 第一部分 4.2 第二部分 Error 1 Error 2 4.3 实验结果 ①参数量与计算量 ②模型大小 ③推理时延 5 探索实验二 5.1 LR Branch 5.2 HR Branch 5.2.1 初步分析 5.2.2 第一部分 enc2x 5.2.3 第二部分 en…

【算法分析与设计】二叉树的层序遍历

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;算法分析与设计 ⛺️稳中求进&#xff0c;晒太阳 题目 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xf…

2017年认证杯SPSSPRO杯数学建模B题(第二阶段)岁月的印记全过程文档及程序

2017年认证杯SPSSPRO杯数学建模 B题 岁月的印记 原题再现&#xff1a; 对同一个人来说&#xff0c;如果没有过改变面容的疾病、面部外伤或外科手术等经历&#xff0c;年轻和年老时的面容总有很大的相似性。人们在生活中也往往能够分辨出来两张不同年龄段的照片是不是同一个人…

3D应用开发工具HOOPS引领数字化工厂浪潮:制造业转型的关键角色!

随着科技的迅猛发展&#xff0c;制造业正经历着数字化转型的浪潮。在这一变革的前沿&#xff0c;Tech Soft 3D 的 HOOPS技术正扮演着关键的角色。 本文将深入研究HOOPS技术如何在数字化工作流程中发挥作用&#xff0c;以及它是如何引领制造业朝着更高效、智能的未来迈进的。 …

对读取的Excel文件数据进行拆分并发请求发送到后端服务器

首先&#xff0c;我们先回顾一下文件的读取操作&#xff1a; 本地读取Excel文件并进行数据压缩传递到服务器-CSDN博客 第一步&#xff1a;根据以上博客&#xff0c;我们将原先的handleFile方法&#xff0c;改为以下内容&#xff1a; const handleFile async(e) > {conso…

低代码技术杂谈

一、探讨低代码的定义 “Low-Code”是什么&#xff1f;身为技术人员听到这种技术名词&#xff0c;咱们第一反应就是翻看维基百科 或者其他相关技术论文&#xff0c;咱们想看维基百科的英文介绍&#xff1a; A low-code development platform (LCDP) provides a development env…

HCIA-HarmonyOS设备开发认证-HarmonyOS简介

目录 前言目标一、HarmonyOS简介1.1、初识HarmonyOS1.2、HarmonyOS典型应用场景 二、HarmonyOS架构与安全2.1、HarmonyOS架构2.1.1 内核层2.1.2 系统服务层2.1.3 框架层2.1.4 应用层 前言 本章主要介绍HarmonyOS分布式操作系统的概念、关键技术与能力以及HarmonyOS典型的应用场…

我们从海龟交易法上能够学到什么现货黄金投资技术?

海龟交易法是一种应用于股票和期货市场的交易方法&#xff0c;一度很流行。但后来随着市场参与者水平的变化&#xff0c;还有交易技术的革新&#xff0c;海龟交易法逐渐失效&#xff0c;简单地应用这个方法已经不能盈利了。尽管如此&#xff0c;我们还是可以从这个方法中学习到…

【Linux】vim配置

我们普通用户打开未配置的vim的时候&#xff0c;和Windows中的vs界面差别很大&#xff0c;使用不是很便捷 这里我们可以配置一下vim&#xff0c;便于我们的操作 我们可以在gitee中搜索vimforcpp VimForCpp: 快速将vim打造成c IDE (gitee.com) curl -sLf https://gitee.com/HGt…

vue2面试题:什么是双向数据绑定

vue2面试题&#xff1a;什么是双向数据绑定 回答思路&#xff1a;1.什么是双向绑定-->2.双向数据绑定的原理-->3.如何实现双向数据绑定1.什么是双向绑定2.双向数据绑定的原理3.如何实现双向数据绑定来一个构造函数&#xff1a;执行初始化&#xff0c;对data执行响应化处理…

【江科大】STM32:定时器中断

文章目录 TIM&#xff08;Timer&#xff09;定时器根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型基本定时器通用定数器 高级定时器 时钟&#xff08;时钟电路&#xff09;的作用是什么&#xff1a;设置定时器触发中断普通方法&#xff1a;预分频器时序…

年末怒赚一笔,程序员快码住!趁热接单

元旦已过&#xff0c;龙年将至。 有钱没钱&#xff0c;回家过年。 话说回来&#xff0c;年关将至&#xff0c;农历的2023即将落下帷幕。天气渐寒&#xff0c;你的钱包是否也让你心生寒意&#xff1f;年初立下的赚钱flag是否优雅地实现了? 如果flag都倒了&#xff0c;你先别…

Nginx 基础使用

目录结构 进入Nginx的主目录我们可以看到这些文件夹 client_body_temp conf fastcgi_temp html logs proxy_temp sbin scgi_temp uwsgi_temp其中这几个文件夹在刚安装后是没有的&#xff0c;主要用来存放运行过程中的临时文件 client_body_temp fastcgi_temp proxy_temp scg…

全文干货!信息化和数字化的本质区别是什么?

信息化和数字化都是行业的发展方向&#xff0c;但有一些区别。 简单来说就是&#xff0c;信息化侧重系统建设&#xff0c;用以管理生成的信息与数据&#xff0c;通常包括建立OA办公系统、业务系统、财务管理系统、客户关系管理系统和人力管理系统等。数字化侧重于将物理业务和…

用Axure RP 9制作弹出框

制作流程 1.准备文本框 下拉列表 按钮 动态面板 如图 2.先把下拉列表放好 再放动态面板覆盖 3.点动态面板 进入界面 如图 4.给按钮添加交互 3个按钮一样的 如图 5.提交按钮添加交互 如图

基于 LangChain 框架,向量数据库如何创建、读取、更新、删除(CRUD)

RAG是目前大语言模型从工具走向生产力实践的最热门的方式&#xff0c;它可以实现从海量的文本数据中检索相关的信息&#xff0c;并用于生成高质量的文本输出。 而聊到RAG&#xff0c;我们就很难避开使用RAG的基础设施-向量数据库 今天我将带领大家&#xff0c;以最为基础的CRU…

Linux配置yum源以及基本yum指令

文章目录 一、yum介绍二、什么是软件包三、配置yum源四、一键配置yum源【三步走】五、yum指令搜索软件安装软件卸载软件 六、其他yum指令更新内核更新软件更新指定软件显示所有可更新的软件清单卸载指定包并自动移除依赖包删除软件包&#xff0c;以及软件包数据和配置文件 一、…

Postman基本使用、测试环境(Environment)配置

文章目录 准备测试项目DemoController测试代码Interceptor模拟拦截配置 Postman模块简单介绍Postman通用环境配置新建环境(Environment)配置环境(Environment)设置域名变量引用域名变量查看请求结果打印 Postman脚本设置变量登录成功后设置全局Auth-Token脚本编写脚本查看conso…

大创项目推荐 行人重识别(person reid) - 机器视觉 深度学习 opencv python

文章目录 0 前言1 技术背景2 技术介绍3 重识别技术实现3.1 数据集3.2 Person REID3.2.1 算法原理3.2.2 算法流程图 4 实现效果5 部分代码6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习行人重识别(person reid)系统 该项目…

C语言第六弹---分支语句(下)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 分支语句 1、 逻辑操作符&#xff1a;&& , || , &#xff01;4.1、 逻辑取反运算符 &#xff01;4.2、 与运算符4.3、 或运算符4.4、 练习&#xff1a;闰…