C++版本OpenCv教程(三十五 )Laplacian算子

2023-05-16

上述的边缘检测算子都具有方向性,因此需要分别求取X方向的边缘和Y方向的边缘,之后将两个方向的边缘综合得到图像的整体边缘。Laplacian算子具有各方向同性的特点,能够对任意方向的边缘进行提取,具有无方向性的优点,因此使用Laplacian算子提取边缘不需要分别检测X方向的边缘和Y方向的边缘,只需要一次边缘检测即可。Laplacian算子是一种二阶导数算子,对噪声比较敏感,因此常需要配合高斯滤波一起使用。

Laplacian算子的定义如式(5.20)所示。
在这里插入图片描述

OpenCV 4提供了通过Laplacian算子提取图像边缘的**Laplacian()**函数,该函数的函数原型在代码清单5-30中给出。

void cv::Laplacian(InputArray  src,
                   OutputArray  dst,
                   int  ddepth,
	               int  ksize = 1,
                   double  scale = 1,
                   double  delta = 0,
                   int  borderType = BORDER_DEFAULT
                   )
  • src:输入原图像,可以是灰度图像或彩色图像。
  • dst:输出图像,与输入图像src具有相同的尺寸和通道数
  • ddepth:输出图像的数据类型(深度),根据输入图像的数据类型不同拥有不同的取值范围,具体的取值范围在表5-1给出,当赋值为-1时,输出图像的数据类型自动选择。
  • ksize:滤波器的大小,必须为正奇数。
  • scale:对导数计算结果进行缩放的缩放因子,默认系数为1,表示不进行缩放。
  • delta:偏值,在计算结果中加上偏值。
  • borderType:像素外推法选择标志,取值范围在表3-5中给出,默认参数为BORDER_DEFAULT,表示不包含边界值倒序填充。

该函数利用Laplacian算子提取图像中的边缘信息,与Soble()函数相同,函数的前两个参数分别为输入图像和输出图像,第三个参数为输出图像的数据类型,这里需要注意由于提取边缘信息时有可能会出现负数,因此不要使用CV_8U数据类型的输出图像,否则会使得图像边缘提取不准确。函数第四个参数是滤波器尺寸的大小,必须是正奇数,当该参数的值大于1时,该函数通过Sobel算子计算出图像X方向和Y方向的二阶导数,将两个方向的导数求和得到Laplacian算子,其计算公式如式(5.21)所示。
在这里插入图片描述

当第四个参数等于1时, Laplacian算子如式(5.22)所示。
在这里插入图片描述

函数最后两个参数为图像缩放因子和图像外推填充方法的标志,多数情况下并不需要设置,只需要采用默认参数即可。

为了更好的理解Laplacian ()函数的使用方法,在代码清单5-31中给出了利用Laplacian ()函数检测图像边缘的示例程序。由于Laplacian算子对图像中的噪声较为敏感,因此程序中使用Laplacian算子分别对高斯滤波后的图像和未高斯滤波的图像进行边缘检测,检测结果在图5-34中给出。通过结果可以发现,图像去除噪声后通过Laplacian算子提取边缘变得更加准确。

#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std;

int main(){
    //读取图像,黑白图像边缘检测结果较为明显
    Mat img=imread("luffy.jpg");
    Mat luffy,luffy_gray;
    resize(img,luffy,Size(img.rows/2,img.cols/2));
    cvtColor(luffy,luffy_gray,COLOR_BGR2GRAY);
    if(luffy_gray.empty()){
        cout<<"请确认输入的图片路径是否正确"<<endl;
        return -1;
    }
    Mat result,result_g,result_G;

    //未滤波提取边缘
    Laplacian(luffy_gray,result,CV_16S,3,1,0);
    convertScaleAbs(result,result);

    //滤波后提取边缘
    GaussianBlur(luffy_gray,result_g,Size(3,3),5,0);//高斯滤波
    Laplacian(result_g,result_G,CV_16S,3,1,0);
    convertScaleAbs(result_G,result_G);

    //显示图像
    imshow("result",result);
    imshow("result_G",result_G);
    waitKey(0);
    return 0;
}

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++版本OpenCv教程(三十五 )Laplacian算子 的相关文章

  • 相机姿态估计(OpenCV PnP)

    我正在尝试使用网络摄像头从具有已知全球位置的四个基准点的图像中获取全局姿态估计 我检查了许多 stackexchange 问题和一些论文 但似乎无法得到正确的解决方案 我得到的位置数字是可重复的 但与相机移动绝不成线性比例 仅供参考 我正在
  • 如何将 OpenCV 等待键与 Chaquopy 一起使用

    我正在尝试使用 Chaquopy 将计算机视觉应用程序移植到 Android 当我尝试运行脚本时 以下行中出现以下错误 cv2 waitKey 100 打印到嵌入式 python 控制台的错误是 java chaquopy CQPEnv c
  • opencv如何使用compareHist函数

    img cv2 imread mandrill png histg cv2 calcHist img 0 None 256 0 256 if len sys argv lt 2 print gt gt sys stderr Usage sy
  • 如何使图像呈现出陈旧、布满灰尘、颜色褪色的外观?

    我有旧画的图像 这些画很旧 布满灰尘 颜色褪色 如图所示here https i stack imgur com xuoEF jpg 如何赋予任何图像这种 旧 外观 我找不到任何过滤器或 openCV 函数来实现这种类型的外观 EDIT 我
  • 为什么这些双精度数的返回值为-1.#IND?

    I have double score cvMatchContourTrees CT1 CT2 CV CONTOUR TREES MATCH I1 0 0 cout lt
  • 计算两个描述符之间的距离

    我正在尝试计算已计算的两个描述符之间的距离 欧几里得或汉明 问题是我不想使用匹配器 我只想计算两个描述符之间的距离 我正在使用 OpenCV 2 4 9 并且我的描述符存储在 Mat 类型中 Mat descriptors1 Mat des
  • OpenCV:视频结束后如何重新启动?

    我正在播放视频文件 但播放完毕后如何再次播放 Javier 如果您想一遍又一遍地重新启动视频 也称为循环播放 可以通过在帧数达到时使用 if 语句来实现cap get cv2 cv CV CAP PROP FRAME COUNT 然后重置帧
  • 在 RGB 图像上绘制多类语义分割透明叠加

    我有语义分割掩码的结果 值在 0 1 之间 需要大津阈值来确定什么是积极的 我想直接在 RGB 图像上绘制 在 RGB 图像上每个预测类具有不同的随机颜色 我使用以下内容绘制了具有单一颜色的单个蒙版 是否有一个包或简单的策略可以为多类别做到
  • 提高 pytesseract 从图像中正确识别文本的能力

    我正在尝试使用读取验证码pytesseract模块 大多数时候它都能提供准确的文本 但并非总是如此 这是读取图像 操作图像以及从图像中提取文本的代码 import cv2 import numpy as np import pytesser
  • 我是否必须使用我的数据库训练 Viola-Jones 算法才能获得准确的结果?

    我尝试提取面部数据库的面部特征 但我认识到 Viola Jones 算法在两种情况下效果不佳 当我尝试单独检测眼睛时 当我尝试检测嘴巴时 运作不佳 检测图像的不同部分 例如眼睛或嘴巴 或者有时会检测到其中几个 这是不可能的情况 我使用的图像
  • Python中最相似的人脸识别

    如何使用Python和OpenCV来查找面部相似 我已成功使用 OpenCV 和 Python 使用 Haar Cascades 从多张照片中提取人脸 我现在有一个图像目录 所有这些都是不同人的面孔 我想做的是拍摄一张样本图像 然后看看它最
  • OpenCV 仅围绕大轮廓绘制矩形?

    第一次发帖 希望我以正确的方式放置代码 我正在尝试检测和计算视频中的车辆 因此 如果您查看下面的代码 我会在阈值处理和膨胀后找到图像的轮廓 然后我使用 drawContours 和矩形在检测到的轮廓周围绘制一个框 我试图在 drawCont
  • 无法在 Windows 7 机器中使用 OpenCV 2.4.3、Python 2.7 打开“.mp4”视频文件

    我目前正在进行一个涉及读取 mp4 视频文件的项目 我遇到的问题是它在Windows 7机器上使用Python 2 7 32位 OpenCV 2 4 3 cv2 pyd 代码片段如下 try video cv2 VideoCapture v
  • OpenCV 3 中的 FLANN 错误

    我运行的是 Ubuntu 14 04 我正在尝试使用 openCV 3 运行 FLANN 但出现错误 下面的所有内容都是通过使用 AKAZE 和 ORB 进行尝试的 但代码来自我尝试使用 ORB 的情况 我使用 ORB 来查找描述符和关键点
  • BASH 脚本编译多个 C++ 文件 - OpenCV

    请参见在C 和OpenCV中调用其他文件中的函数 https stackoverflow com questions 24442836 call functions in other files in c and opencv 对于最初的问
  • 为什么我无法在 Mac 12.0.1 (Monterey) 上使用 pip 安装 OpenCV? [复制]

    这个问题在这里已经有答案了 当我尝试使用 python pip 安装 OpenCV 时 它显示了以下内容 Remainder of file ignored Requirement already satisfied pip in Libr
  • 从图像坐标获取对象的世界坐标

    I have been following this http docs opencv org modules calib3d doc camera calibration and 3d reconstruction html docume
  • OpenCV 2.4.3 中的阴影去除

    我正在使用 OpenCV 2 4 3 最新版本 使用内置的视频流检测前景GMG http docs opencv org modules gpu doc video html highlight gmg gpu 3a 3aGMG GPU算法
  • 如何确定与视频中物体的距离?

    我有一个从行驶中的车辆前面录制的视频文件 我将使用 OpenCV 进行对象检测和识别 但我停留在一方面 如何确定距已识别物体的距离 我可以知道我当前的速度和现实世界的 GPS 位置 但仅此而已 我无法对我正在跟踪的对象做出任何假设 我计划用
  • 如何将 Mat (opencv) 转换为 INDArray (DL4J)?

    我希望任何人都可以帮助我解决这个任务 我正在处理一些图像分类并尝试将 OpenCv 3 2 0 和 DL4J 结合起来 我知道DL4J也包含Opencv 但我认为它没什么用 谁能帮我 如何转换成 INDArray 我尝试阅读一些问题here

随机推荐

  • 关于for循环声明int i的位置

    猿问 C 测试 数据结构 qq 阿篮 0 2017 10 22 13 06 28 for int i 61 0 i lt 10 i 43 43 int i 61 0 for i lt 10 i 43 43 请问这两个运行速度是第一个快吗 x
  • 阿里云-轻量应用服务器-Ubuntu-mysql安装-mysql外连配置-远程连接mysql

    按照本文的步骤 xff0c 能让你在外面 xff0c 用连接上的阿里云轻应用服务器 傻瓜式步骤演示 1 服务器防火墙设置 1 xff09 点击打开 轻量级应用服务器控制台 安全 防火墙 2 xff09 观察红框内有没有MYSQL设置 如果没
  • 阿里云-轻量应用服务器-防火墙-ufw-gufw

    序言 在服务器上装了VNC和xfce 启动VNC服务后发现每过一段时间VNC就不能连接了 上网查询报错原因 发现是因为密码输入错误次数过多 龟龟 xff0c 网上这么多坏人的吗 为了使VNC一直启动的同时不会被别人乱输入密码导致停止服务 x
  • 以太网二层技术——VPLS详解

    目录 前言 xff1a xff08 由于时间关系 xff0c 本篇仅先写了关于VPLS相关 xff09 一 VPLS简介 xff1a 二 VPLS基本工作原理及步骤 xff1a 三 VPLS的报文转发过程 xff1a 四 VPLS的缺点 x
  • SR技术概述与基本概念(SR-BE&SR-TE)

    目录 一 SR背景 二 SR概述 xff1a SR具有如下特点 xff1a SR优势 xff1a 三 一些名词的基本概念 基本概念 xff1a Segment 基本概念 xff1a Segment ID 简称SID xff0c 用于标识se
  • 网络同步技术

    一 同步技术 时钟同步包括 xff1a 频率同步 和时间同步 频率同步要求 相同的时间间隔 xff0c 时间同步要求 时间的起始点相同 和 相同的时间间隔 二 同步以太网技术 xff08 频率同步 xff09 xff1a SyncE xff
  • 以太网虚拟专用网络的工作流程(重点3张表与4种路由)

    目录 一 前言 二 EVPN四种类型路由的作用 三 EVPN表项简介 xff1a xff08 重点 四 EVPN的工作流程分为两个阶段 xff1a 4 1 EVPN启动阶段 xff1a 4 2 EVPN流量转发 xff1a Type2 控制
  • 网络工程师Python入门学习笔记-01

    目录 一 Python编码规范 xff1a 1 1 符号 xff1a 1 2 注释 xff1a 1 3 代码缩进 xff1a 很重要 二 Python的函数与模块 三 Python的类与方法 3 1 类 3 2 telnetlib介绍 xf
  • NETCONF、RESTCONF和YANG

    目录 一 NETCONF RESTCONF和YANG是之间什么关系 xff1f 二 Netconf简介 2 1 一般使用工具 xff1a MG Soft 简介 三 Netconf YANG 原理与实践 3 1 NETCONF协议 3 2 Y
  • Telemetry原理

    Telemetry 是一种网络设备监控技术 xff0c 提供 周期采样网络设备内的统计数据和状态数据的能力 一 Telemetry概述 1 1 技术背景 xff1a 网络设备的统一监控和性能管理是运维平台的重要功能 xff0c 设备的监控数
  • 二三层网络设备封装与解封装原理

    1 寻址转发 xff08 寻址指的是寻找IP地址 xff09 路由表放在一个公共的地方 xff0c 比如主控板上 xff0c 由主控板 的CPU运行路由协议 xff0c 计算路由 xff0c 生成和维护路由表 转发表与路由表 xff1a 转
  • BLE外围设备在Advertising中添加ServiceData

    startAdvertising失败 xff0c errorCode 61 1 AdvertiseCallback ADVERTISE FAILED DATA TOO LARGE errorCode解释 xff1a Failed to st
  • SBFD(Seamless Bidirectional Forwarding Detection)

    SBFD简介 xff1a 更适合SR隧道 BFD进行大量链路检测 时 xff0c 其状态机的协商时间会变长 xff0c 不适合Segement Routing SBFD xff08 Seamless Bidirectional Forwar
  • 使用CCProxy+Proxifier实现代理

    目录 1 使用场景2 什么是网络代理 xff1f 3 CCProxy3 1 说明3 2 下载安装3 3 使用说明 4 Proxifier4 1 说明4 2 下载安装4 3 使用说明4 4 Proxifier CPU占用率高问题解决 1 使用
  • 5G/NR PDSCH之频域资源分配

    物理下行共享信道 Physical Downlink Shared CHannel PDSCH 是无线通信系统中物理下行信道的一种 xff0c 用于传输下行用户数据 而在PDSCH进行下行数据传输时 xff0c 是需要基站给下行数据指定分配
  • NMS详解及pytorch实现:hard-nms(diou\overlap\merge\batched),soft-nms

    文章目录 NMS详解及pytorch实现 hard nms diou overlap merge batched soft nms1 简介2 原理3 实现3 1 伪代码3 2 pytorch源码3 3 知识点 参考资料 NMS详解及pyto
  • Deep-Sort多目标追踪算法代码解析

    Deep SORT是多目标跟踪 Multi Object Tracking 中常用到的一种算法 xff0c 是一个Detection Based Tracking的方法 这个算法工业界关注度非常高 xff0c 在知乎上有很多文章都是使用了D
  • RTFNet:基于可见光/红外图像的城市自动驾驶道路场景语义分割

    论文下载 xff1a https yuxiangsun github io pub RAL2019 rtfnet pdf 代码下载 xff1a https github com yuxiangsun RT 简介 xff1a 语义分割是自动驾
  • 红黑树的查找时间复杂度O(logn)

    红黑树查找时间复杂度 如果二叉排序树是平衡的 xff0c 则n个节点的二叉排序树的高度为Log2n 43 1 其查找效率为O Log2n xff0c 近似于折半查找 如果二叉排序树完全不平衡 xff0c 则其深度可达到n xff0c 查找效
  • C++版本OpenCv教程(三十五 )Laplacian算子

    上述的边缘检测算子都具有方向性 xff0c 因此需要分别求取X方向的边缘和Y方向的边缘 xff0c 之后将两个方向的边缘综合得到图像的整体边缘 Laplacian算子具有各方向同性的特点 xff0c 能够对任意方向的边缘进行提取 xff0c