迅为iTOP-RK3568开发板Sobel 算子边缘检测

本小节代码在配套资料“iTOP-3568 开发板\03_【iTOP-RK3568 开发板】指南教程

\04_OpenCV 开发配套资料\32”目录下,如下图所示:

Sobel (索贝尔)算子是计算机视觉领域的一种重要处理方法。主要用于获得数字图像的一阶梯度,常见的应用和物理意义是边缘检测。

索贝尔算子把图像中每个像素的上下左右四领域的灰度值加权差,在边缘处达到极值从而检测边缘。在技术上,它是一离散性差分算子,用来运算图像亮度函数的梯度之近似值。在图像

的任何一点使用此算子,将会产生对应的梯度矢量或是其法矢量。

索贝尔算子不但能产生较好的检测效果,而且对噪声有着平滑抑制作用,是最为常用的边缘检测算子,但是得到的边缘较粗,可能出现伪边缘。

cv2.Sobel 函数功能:

使用 Sobel 算子进行边缘检测。

函数原型:

dst = cv2.Sobel( src, ddepth, dx, dy[,ksize[, scale[, delta[, borderType]]]] )

参数定义:

dst 代表目标图像。

src 代表原始图像。

ddepth 代表输出图像的深度。

dx 代表 x 方向上的求导阶数。

dy 代表 y 方向上的求导阶数。

ksize 代表 Sobel 核的大小。该值为-1 时,则会使用 Scharr 算子进行运算。

scale 代表计算导数值时所采用的缩放因子,默认情况下该值是 1,是没有缩放的。

delta 代表加在目标图像 dst 上的值,该值是可选的,默认为 0。

borderType 代表边界样式。

而在实际操作中,计算梯度值可能会出现负数。通常处理的图像是 8 位图类型,如果结果也是该类型,那么所有负数会自动截断为 0,发生信息丢失。所以,为了避免信息丢失,在

计算时使用更高的数据类型 cv2.CV_64F,再通过取绝对值将其映射为 cv2.CV_8U(8 位图)类型。故此还需要调用 convertScaleAbs()函数计算绝对值,并将图像转换为 8 位图进行显示。其算法原型如下:

dst = convertScaleAbs(src[, dst[, alpha[, beta]]])

参数定义:

dst 代表处理结果。

src 代表原始图像。

alpha 代表调节系数,该值是可选值,默认为 1。

beta 代表调节亮度值,该值是默认值,默认为 0。

实验:

实验要求:

使用 cv2.Sobel 函数,分别对 x 轴和 y 轴进行边缘检测,随后使用 cv2.addWeighted 函数以0.5:0.5 的比例将两个图像进行融合,最后使用 cv2.imshow()函数对原图和边缘检测的三个图

像进行展示。

实验步骤:

首先进入到 ubuntu 的终端界面将“iTOP-3568 开发板\03_【iTOP-RK3568 开发板】指南教程\04_OpenCV 开发配套资料\32”路径下的 number.png 拷贝到 ubuntu 虚拟机上,拷贝完成如

下图所示:

然后来到 ubuntu 虚拟机的终端界面,输入以下命令来创建 demo32_Sobel.py 文件,如下图所示:

vim demo32_Sobel.py

然后向该文件中添加以下内容:

1 import cv2 #opencv 的缩写为 cv2,导入 opencv

2 img = cv2.imread('number.png',1) #flags 参数为 1,返回彩色图像

3 cv2.imshow('原图',img)#通过 cv2.imshow()函数展示原图

4 sobelx = cv2.Sobel(img,cv2.CV_64F,1,0,ksize=3)# 使用 Sobel 算子进行边缘检测,数据类型设置为 cv2.CV_64F,

5 只算 x 方向梯度,Sobel 核大小设置为 3

6 sobelx = cv2.convertScaleAbs(sobelx) # 计算绝对值

7 cv2.imshow('sobelx',sobelx)#通过 cv2.imshow()函数展示 x 方向梯度边缘检测计算之后的图像

8 sobely = cv2.Sobel(img,cv2.CV_64F,0,1,ksize=3) #使用 Sobel 算子进行边缘检测,数据类型设置为 cv2.CV_64F, 

9 只算 x 方向梯度,Sobel 核大小设置为 3

10 sobely = cv2.convertScaleAbs(sobely) #计算绝对值

11 cv2.imshow('sobely',sobely)#通过 cv2.imshow()函数展示 y 方向梯度边缘检测计算之后的图像

12 sobelxy = cv2.addWeighted(sobelx,0.5,sobely,0.5,0) # 图像融合的系数比为 0.5:0.5,0 表示偏置项

13 cv2.imshow('sobelxy',sobelxy)#通过 cv2.imshow()函数展示融合之后的图像

14 cv2.waitKey(0)#等待下一次按键按下

第 1 行导入了 opencv 库;

第 2 行使用了 imread()函数对 number.png 图片进行读取;

第 3 行使用了 imshow()函数对原图像进行展示;

第 4 行使用 Sobel 算子进行边缘检测计算,数据类型设置为 cv2.CV_64F,只算 x 方向梯

度,Sobel 核大小设置为 3;

第 8 行使用 Sobel 算子进行边缘检测计算,数据类型设置为 cv2.CV_64F,只算 y 方向梯度,Sobel 核大小设置为 3;

第 6 行和第 10 行使用了 convertScaleAbs()函数获取绝对值,并将图像转换为 8 位;

第 7 行和第 11 行使用了 imshow()函数对两个方向梯度进行边缘检测计算之后的图像进行展示;

第 12 行使用了 addWeighted()函数进行图像融合,两个图像的融合系数比为 0.5:0.5;

第 13 行使用了 imshow()函数对融合之后的图像进行展示;

第 14 行使用了 waitKey()函数,持续显示展示照片直到按键的按下。

保存退出之后,在终端界面中输入以下命令进行 python 代码的运行,运行结果如下图所示:

python demo32_Sobel.py

第 1 张图为原图,一个数独图像被显示了出来,第 2 张图像为 x 轴方向梯度经过边缘检测计算的图像,可以看到纵向的线条被很好的区分了出来,第 3 张图像为 y 轴方向梯度经过边缘

检测计算的图像,可以看到横向的线条被很好的区分了出来,第 4 张图像为两张边缘计算图像的融合,可以看到图像的边缘特点被很好的展现了出来,至此 Sobel 算子边缘计算相关的实验

就结束了。

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

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

相关文章

docker swarm集群

集群构建 不包含在任何 Swarm 中的 Docker 节点,称为运行于单引擎(Single-Engine)模式。一旦被加入 Swarm 集群,则切换为 Swarm 模式。第一步我们要做的就是初始化 Swarm。 初始化swarm集群 将本机作为manager节点 docker swar…

举例说明用 easylanguage 语言,编写抄底公式

EasyLanguage 语言在金融领域被广泛使用,尤其是用于编写交易策略和算法。以下是一个简单的抄底公式示例: swift 复制 // 定义变量和参数 Dim StopLossPrice As Double Dim TakeProfitPrice As Double Dim InitialPosition As Double Dim SafetyZon…

Promethus(普罗米修斯)安装与配置(亲测可用)

1. 普罗米修斯概述 Prometheus(是由go语言(golang)开发)是一套开源的监控&报警&时间序列数 据库的组合。适合监控docker容器。 Prometheus是最初在SoundCloud上构建的开源系统监视和警报工具包 。自2012年成立以来,许多公司和组织都采用了Prometheus&#…

【Linux进行时】进程状态

进程状态: ❓假设我们在上课,在B站上上课,请问我们的B站是不是一直运行呢?💡不是的! ❓假设我们同时打开了B站和PDF阅读器时,是怎么运行的呢? 💡每一个进程在CPU跑一会&a…

工业RFID进口品牌和国内品牌差距有多大?

随着国内的RFID技术也逐渐发展成熟,国产工业品牌也不断优化,推出了不少高品质、高性能的工业读写器。对于企业来说,在选择读写器的时候也有了更多的选择,那么,现如今工业RFID进口品牌和国内品牌差距有多大,…

深度解析NLP文本摘要技术:定义、应用与PyTorch实战

目录 1. 概述1.1 什么是文本摘要?1.2 为什么需要文本摘要? 2. 发展历程2.1 早期技术2.2 统计方法的崛起2.3 深度学习的应用2.4 文本摘要的演变趋势 3. 主要任务3.1 单文档摘要3.2 多文档摘要3.3 信息性摘要 vs. 背景摘要3.4 实时摘要 4. 主要类型4.1 抽取…

迅为i.MX8mm小尺寸商业级/工业级核心板

尺寸: 50mm*50mm CPU: NXP i.MX8M Mini 主频: 1.8GHz 架构: 四核Cortex-A53,单核Cortex-M4 PMIC: PCA9450A电源管理PCA9450A电源管理NXP全新研制配,iMX8M的电源管理芯片有六个降压稳压器、五…

C#-WinForm-发送邮件

登录QQ邮箱——设置——开启“POP3/SMTP服务” 登陆QQ邮箱→打开设置→开启“POP3/SMTP服务”,获取“授权码” 简单总结一下: 1、使用SmtpClient发送电子邮件是很简单的,只要正确创建了MailMessage对象和SmtpClient就可以很容易的发送出去电…

RBTree(红黑树)模拟实现(插入)

目录 红黑树的性质 红黑树的模拟插入 叔叔存在且为红色 叔叔不存在 旋转情况​​​​​​​ 叔叔存在且为黑色 总结 插入实现 节点 插入逻辑 左单旋 右单旋 红黑树是一颗平衡搜索二叉树,但是红黑树并不像 AVL 树一样是高度平衡二叉树,任意一…

无涯教程-JavaScript - LCM函数

描述 LCM函数返回整数的最小公倍数。最小公倍数是最小的正整数,它是所有整数参数number1,number2等的倍数。使用LCM添加具有不同分母的分数。 语法 LCM (number1, [number2] ...)争论 Argument描述Required/OptionalNumber1, number2... 您想要最小公倍数的1到255个值。 如…

kubesphere中间件部署

微服务部署前中间件部署 一、MySQL部署 1.1 使用Docker实现MySQL主从复制 docker run -p 3307:3306 --name mysql-master \ -v /mydata/mysql/master/log:/var/log/mysql \ -v /mydata/mysql/master/data:/var/lib/mysql \ -v /mydata/mysql/master/conf:/etc/mysql \ -e My…

Leetcode算法入门与数组丨3. 数组基础

文章目录 前言1 数组简介2 数组的基本操作2.1 访问元素2.2 查找元素2.3 插入元素2.4 改变元素2.5 删除元素 3 总结task03task04 前言 Datawhale组队学习丨9月Leetcode算法入门与数组丨打卡笔记 这篇博客是一个 入门型 的文章,主要是自己学习的一个记录。 内容会参…

带你熟练使用list

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻强烈推荐优质专栏: 🍔🍟🌯C的世界(持续更新中) 🐻推荐专栏1: 🍔🍟🌯C语言初阶 🐻推荐专栏2: 🍔…

Nginx map 实现时间格式转换

哈喽大家好,我是咸鱼 最近我们需要把 Nginx 的日志接入到自研的日志采集平台上,但是这个平台只支持 JSON 格式,所以需要把 Nginx 日志格式改成 JSON 格式 例如下面这样的效果 刚开始在主配置文件 nginx.conf 中定义了一个名叫 json 的日志…

2023 蓝帽杯初赛web部分取证复现

前言&#xff1a;初赛进线下了&#xff0c;计划着在决赛前突击学习一下取证&#xff0c;但时间还是太紧 只看了很多内存取证和手机取证 计算机取证和服务器取证没掌握 ---( 不过复赛没考&#xff0c;也算狗运了) 目录 <1> web-LovePHP(file()函数侧信道攻击) <2&g…

在TensorFlow中使用GAN生成图像

一、说明 本文详细论述&#xff0c;如何在tensorflow下&#xff0c;在mnist数据集合上进行GAN实现。包括&#xff1a;框架建立、数据集读出、生成器、鉴别器、代价函数、优化等具体步骤的代码实现。 二、GAN框架介绍 生成器&#xff1a;此组件负责生成新图像。鉴别器&#xf…

《Docker与Kubernetes容器运维实战》简介

#好书推荐##好书奇遇季#《Docker与Kubernetes容器运维实战》已经出版。本书帮助读者系统掌握Docker与K8s运维技能。 本书内容 本书分两部分系统介绍Docker与Kubernetes的运维技术。 &#xff08;1&#xff09;Docker部分包括&#xff1a;全面认识Docker、初步体验Docker、Dock…

Vue记录(下篇)

Vuex getters配置项 *Count.vue <template><div><h1>当前求和为&#xff1a;{{$store.state.sum}}</h1><h3>当前求和的10倍为&#xff1a;{{$store.getters.bigSum}}</h3><select v-model.number"n"><option value&q…

HarmonyOS开发环境搭建

一 鸿蒙简介&#xff1a; 1.1 HarmonyOS是华为自研的一款分布式操作系统&#xff0c;兼容Android&#xff0c;但又区别Android&#xff0c;不仅仅定位于手机系统。更侧重于万物物联和智能终端&#xff0c;目前已更新到4.0版本。 1.2 HarmonyOS软件编程语言是ArkTS&#xff0c…

有哪些编程语言能在AI的应用上大显身手?

人工智能&#xff08;AI&#xff09;是当今最热门的技术领域之一&#xff0c;它涉及到许多不同的子领域&#xff0c;如机器学习、深度学习、自然语言处理、计算机视觉、语音识别等。要开发AI应用&#xff0c;就需要使用一种或多种编程语言&#xff0c;但是&#xff0c;并不是所…