c++视觉处理-----Laplacian算 子

news2025/6/22 19:12:34

Laplacian算 子

cv::Laplacian 是 OpenCV 中的一个函数,用于应用Laplacian算子(拉普拉斯算子)在图像上进行边缘检测。以下是 cv::Laplacian 函数的基本用法:

cv::Laplacian(src, dst, ddepth, ksize, scale, delta, borderType);
  • src: 输入图像,通常是灰度图像(单通道)。
  • dst: 输出图像,用于存储Laplacian结果。
  • ddepth: 输出图像的深度,通常设置为 CV_16S
  • ksize: Laplacian核的大小,默认是3,通常用3x3核。
  • scale: 可选参数,结果的缩放因子,默认为1。
  • delta: 可选参数,可选的加法常量,默认为0。
  • borderType: 可选参数,用于处理图像边界的方式,默认是 cv::BORDER_DEFAULT

cv::Laplacian 函数会将Laplacian算子应用于输入图像 src,并将结果存储在 dst 中,以便进行边缘检测。通常,您需要将输入图像转换为灰度图像,因为Laplacian算子通常用于单通道图像。

这个函数是OpenCV中图像处理的一部分,用于检测图像中的边缘和纹理信息。您可以根据需要调整参数以满足您的应用需求。

Laplacian算子来检测图像中的边缘

#include <opencv2/opencv.hpp>

int main() {
    // 读取图像
    cv::Mat image = cv::imread("your_image.jpg");

    if (image.empty()) {
        std::cerr << "无法加载图像" << std::endl;
        return -1;
    }

    // 转换为灰度图像
    cv::Mat grayImage;
    cv::cvtColor(image, grayImage, cv::COLOR_BGR2GRAY);

    // 应用Laplacian算子
    cv::Mat laplacianImage;
    cv::Laplacian(grayImage, laplacianImage, CV_16S);
    cv::convertScaleAbs(laplacianImage, laplacianImage);

    // 显示结果
    cv::imshow("原始图像", image);
    cv::imshow("Laplacian结果", laplacianImage);

    cv::waitKey(0);
    return 0;
}

在这里插入图片描述

使用本地相机实时Laplacian算 子

#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>

// 回调函数,用于处理滑动块的变化
void onTrackbar(int threshold, void* userData) {
    cv::Mat frame;
    cv::VideoCapture cap(0); // 打开本地相机(通常是0号摄像头)

    if (!cap.isOpened()) {
        std::cerr << "无法打开相机" << std::endl;
        return;
    }

    while (true) {
        cap >> frame; // 从相机捕获一帧图像

        // 转换为灰度图像
        cv::Mat grayImage;
        cv::cvtColor(frame, grayImage, cv::COLOR_BGR2GRAY);

        // 应用Laplacian算子
        cv::Mat laplacianImage;
        cv::Laplacian(grayImage, laplacianImage, CV_16S);
        cv::convertScaleAbs(laplacianImage, laplacianImage);

        // 显示结果
        cv::imshow("实时Laplacian", laplacianImage);

        // 等待用户按下ESC键,然后退出循环
        if (cv::waitKey(1) == 27) {
            break;
        }
    }
}

int main() {
    cv::namedWindow("实时Laplacian");
    int initialThreshold = 3;
    int maxThreshold = 30;
    cv::createTrackbar("阈值", "实时Laplacian", &initialThreshold, maxThreshold, onTrackbar);
    
    onTrackbar(initialThreshold, nullptr); // 初始化

    cv::waitKey(0); // 等待用户按下任意键退出
    return 0;
}

Laplacian算 子特征提取

#include <opencv2/opencv.hpp>

int main() {
    // 读取图像
    cv::Mat image = cv::imread("your_image.jpg", cv::IMREAD_GRAYSCALE); // 转为灰度图像

    if (image.empty()) {
        std::cerr << "无法加载图像" << std::endl;
        return -1;
    }

    // 应用Laplacian算子
    cv::Mat laplacianImage;
    cv::Laplacian(image, laplacianImage, CV_16S);

    // 将结果转换为正数
    cv::Mat laplacianAbs;
    cv::convertScaleAbs(laplacianImage, laplacianAbs);

    // 二值化处理以提取边缘特征
    cv::Mat binaryImage;
    cv::threshold(laplacianAbs, binaryImage, 30, 255, cv::THRESH_BINARY);

    // 显示结果
    cv::imshow("原始图像", image);
    cv::imshow("Laplacian结果", laplacianAbs);
    cv::imshow("边缘特征", binaryImage);

    cv::waitKey(0);
    return 0;
}

在这里插入图片描述

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

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

相关文章

sql分组去重计数distinctcountgroup by

count 可以与 distinct 连用&#xff0c;这样可以实现去重计数&#xff1b;加上group by 可实现按某个字段分组&#xff0c;而对其它字段进行去重计数 学习链接 count()和distinct关键字的使用 distinct关键字 distinct关键字是用于去除重复的数据记录。distinct使用情况&a…

09_Webpack打包工具

1 初识Webpack 1.1 什么是Webpack Webpack打包工具对项目中的复杂文件进行打包处理&#xff0c;可以实现项目的自动化构建&#xff0c;并且给前端开发人员带来了极大的便利。 目前&#xff0c;企业中的绝大多数前端项目是基于Webpack打包工具来进行开发的。 1.2 Webpack的安…

ChatGPT,AIGC 数据库应用 Mysql 常见优化30例

使用ChatGPT,AIGC总结出Mysql的常见优化30例。 1. 建立合适的索引:在Mysql中,索引是重要的优化手段,可以提高查询效率。确保表的索引充分利用,可以减少查询所需的时间。如:create index idx_name on table_name(column_name); 2. 避免使用select * :尽可能指定要返回的…

拼多多商品品牌数据采集接口,拼多多商品详情数据接口,拼多多API接口

拼多多商品品牌数据采集的方法如下&#xff1a; 手动数据采集。直接在拼多多平台上搜索并手动复制商品数据&#xff0c;适合采集小批量的商品数据。自动数据采集。通过爬虫来自动获取&#xff0c;具体步骤如下&#xff1a; 选择爬虫框架并安装。Python爬虫框架有很多&#xf…

计算机毕业设计选什么题目好?springboot 校园失物招领平台

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

发布npm包质量分测试

查询质量分接口 https://registry.npmjs.org/-/v1/search?textcanvas-plus v0.0.1 quality 0.2987 新建文件夹 canvas-plus 执行命令 npm init 生成package.json {"name": "3r/canvas-plus","version": "0.0.1","descript…

EXCEL——根据单元格值设置不同色阶

方法&#xff1a;开始—>条件格式—>色阶&#xff08;默认色阶或复杂色阶&#xff09;。 一、默认色阶 如图&#xff0c;可选择自定义的色阶模式。 二、复杂色阶 1、如图&#xff0c;点击"其他规则" 2、选择复杂格式 此时可以看到&#xff0c;支持多种格式…

uniapp 使用和引入 thorui

1. npm install thorui-uni 2. "easycom": { "autoscan": true, "custom": { "tui-(.*)": "thorui-uni/lib/thorui/tui-$1/tui-$1.vue" } }, 3.

spring boot RabbitMq基础教程

RabbitMq 由于RabbitMQ采用了AMQP协议&#xff0c;因此它具备跨语言的特性。任何语言只要遵循AMQP协议收发消息&#xff0c;都可以与RabbitMQ交互。并且RabbitMQ官方也提供了各种不同语言的客户端。 但是&#xff0c;RabbitMQ官方提供的Java客户端编码相对复杂&#xff0c;一般…

如何看待国内PMP考试通过率高达97%?

自认为是虚高&#xff0c;虽然中国人在考试方面的确独树一帜的强&#xff0c;应该也没有这样夸张。 我分析&#xff0c;因为报考的条件有一个“由PMI项目管理协会授权的培训机构开具35学时证明”&#xff0c;这样&#xff0c;就都不得不去报培训班&#xff0c;但大家都知道有可…

Qual+Android方案Unlock学习 以Oneplus7Pro为例

目录 背景 Unpack guacamole_21_H.04_190416.ops Unlock探究 开发者选项–允许解锁 fastboot oem unlock extract LinuxLoader from abl 过程分析 FH读写分区 逆向MSM Download USB抓包 token & pk 逆向结果 尝试修改分区实现unlock VerifiedBoot Protocol 分…

Spring-事务源码解析2

上一篇文章我们介绍了事务开启注解EnableTransactionManagement源码解析《Spring-事务源码解析1》 里面提到了2个关键组件&#xff0c;这里我们分析下Spring如何利用这2个组件来给Bean创建代理对象。 文章待整理 先说下执行流程&#xff0c;当请求进来的时候&#xff0c;会执…

TensorFlow入门(二十五、单个神经元的扩展——Maxout网络)

Maxout网络的原理 Maxout是Goodfellow在2013年提出的一个新的激活函数,与其它的激活函数相比,Maxout是需要参数的,且参数可以通过网络的反向传播得到学习,因此它比其它激活函数有着更好的性能,理论上可以拟合任意凸函数,进而使得网络取得更好的性能。 Maxout网络主要是扩展单个…

移动app广告变现,对接广告联盟还是选择第三方聚合广告平台?

作为互联网广告的载体&#xff0c;APP天生就比线下传统广告位更具优势&#xff0c;不受地域限制可以辐射到地球上的每一个角落&#xff0c;可以让广告获得更广的覆盖面。通过丰富的广告形式&#xff0c;精准的目标用户画像&#xff0c;也可以更好地实现品牌广告或效果广告的投放…

主流大模型训练库和框架的介绍

文章目录 前言1.主流大模型框架介绍 前言 参考&#xff1a; Pytorch训练模型损失Loss为Nan或者无穷大&#xff08;INF&#xff09;原因 1.主流大模型框架介绍

模拟电路基础知识经典 200问,收藏这些就够了!

大家总说模电知识总是学不会&#xff0c;IC修真院为大家整理了模电经典200问&#xff0c;看看你掌握了多少&#xff0c;文末可以获取全部哦。 文末可领全部文档 1、半导体材料制作电子器件与传统的真空电子器件相比有什么特点? 答&#xff1a;频率特性好、体积小、功耗小&…

CDN加速服务:网站快递服务

原始服务器&#xff1a;网站的储藏库 想象一下&#xff0c;CDN加速服务的旅程从原始服务器开始&#xff0c;这个服务器就像是一个巨大的储藏库&#xff0c;通常藏身于数据中心或云服务提供商的服务器中。这里存放着网页、图片、视频、应用程序等静态和动态的货品。 CDN节点&…

SpringBoot整合JWT、实现登录和拦截

SpringBoot整合JWT 、实现登录和拦截 一、JWT简介1.什么是JWT2.为什么要用JWT3.传统Session认证的弊端4.JWT认证的优势5.JWT结构 二、SpringBoot整合JWT1.引入依赖2.JWT工具类3.自定义拦截器4.异常处理1.自定义异常ServiceException2.全局异常处理器3.同一封装返回结果 3.登录实…

Window10运行onnxruntime报错的处理

背景 在Windows10中安装好英伟达驱动、cuda、cudnn等资源&#xff0c;然后运行程序的时候&#xff0c;发现程序会在加载模型时崩溃。 经过一番查找后&#xff0c;得到输出的信息是说是缺少zlibwapi.dll。 这个问题是去年做的一个项目时发现的&#xff0c;忘记当时是怎么发现了…

Java标识符和关键字,Java常量的定义和分类

任何一种计算机语言都离不开标识符和关键字&#xff0c;因此下面将详细介绍 java 的标识符、关键字和保留字。 标识符 Java 中标识符是为方法、变量或其他用户定义项所定义的名称。标识符可以有一个或多个字符。在 Java 语言中&#xff0c;标识符的构成规则如下。 标识符由数…