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

2023-10-12 06:52
文章标签 c++ 处理 视觉 laplacian

本文主要是介绍c++视觉处理-----Laplacian算 子,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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;
}

在这里插入图片描述

这篇关于c++视觉处理-----Laplacian算 子的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/194100

相关文章

Windows下C++使用SQLitede的操作过程

《Windows下C++使用SQLitede的操作过程》本文介绍了Windows下C++使用SQLite的安装配置、CppSQLite库封装优势、核心功能(如数据库连接、事务管理)、跨平台支持及性能优... 目录Windows下C++使用SQLite1、安装2、代码示例CppSQLite:C++轻松操作SQ

电脑提示xlstat4.dll丢失怎么修复? xlstat4.dll文件丢失处理办法

《电脑提示xlstat4.dll丢失怎么修复?xlstat4.dll文件丢失处理办法》长时间使用电脑,大家多少都会遇到类似dll文件丢失的情况,不过,解决这一问题其实并不复杂,下面我们就来看看xls... 在Windows操作系统中,xlstat4.dll是一个重要的动态链接库文件,通常用于支持各种应用程序

C++中RAII资源获取即初始化

《C++中RAII资源获取即初始化》RAII通过构造/析构自动管理资源生命周期,确保安全释放,本文就来介绍一下C++中的RAII技术及其应用,具有一定的参考价值,感兴趣的可以了解一下... 目录一、核心原理与机制二、标准库中的RAII实现三、自定义RAII类设计原则四、常见应用场景1. 内存管理2. 文件操

C++中零拷贝的多种实现方式

《C++中零拷贝的多种实现方式》本文主要介绍了C++中零拷贝的实现示例,旨在在减少数据在内存中的不必要复制,从而提高程序性能、降低内存使用并减少CPU消耗,零拷贝技术通过多种方式实现,下面就来了解一下... 目录一、C++中零拷贝技术的核心概念二、std::string_view 简介三、std::stri

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w

C++高效内存池实现减少动态分配开销的解决方案

《C++高效内存池实现减少动态分配开销的解决方案》C++动态内存分配存在系统调用开销、碎片化和锁竞争等性能问题,内存池通过预分配、分块管理和缓存复用解决这些问题,下面就来了解一下... 目录一、C++内存分配的性能挑战二、内存池技术的核心原理三、主流内存池实现:TCMalloc与Jemalloc1. TCM

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

C++作用域和标识符查找规则详解

《C++作用域和标识符查找规则详解》在C++中,作用域(Scope)和标识符查找(IdentifierLookup)是理解代码行为的重要概念,本文将详细介绍这些规则,并通过实例来说明它们的工作原理,需... 目录作用域标识符查找规则1. 普通查找(Ordinary Lookup)2. 限定查找(Qualif

Golang 日志处理和正则处理的操作方法

《Golang日志处理和正则处理的操作方法》:本文主要介绍Golang日志处理和正则处理的操作方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录1、logx日志处理1.1、logx简介1.2、日志初始化与配置1.3、常用方法1.4、配合defer