当前位置: 首页 > news >正文

c++视觉处理---均值滤波

均值滤波

cv::blur()函数是OpenCV中用于应用均值滤波的函数。均值滤波是一种简单的平滑技术,它计算每个像素周围像素的平均值,并用该平均值替代原始像素值。这有助于降低图像中的噪声,并可以模糊图像的细节。

以下是cv::blur()函数的基本用法:

void cv::blur(cv::InputArray src,         // 输入图像cv::OutputArray dst,        // 输出图像cv::Size ksize,             // 滤波核大小,通常是一个奇数cv::Point anchor = cv::Point(-1,-1),  // 锚点位置,默认为核的中心int borderType = cv::BORDER_DEFAULT   // 边界处理方式,默认为BORDER_DEFAULT
);

参数解释:

  • src: 输入图像。
  • dst: 输出图像,将平滑后的图像存储在这里。
  • ksize: 滤波核的大小,通常是一个奇数,例如(3, 3)(5, 5)。较大的核将导致更强烈的平滑效果。
  • anchor: 锚点位置,默认为(-1, -1),表示核的中心。
  • borderType: 边界处理方式,控制在图像边界处如何处理滤波操作。通常使用默认值cv::BORDER_DEFAULT

以下是示例代码,演示如何使用cv::blur()函数进行均值滤波:

#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>int main() {// 读取图像cv::Mat image = cv::imread("your_image.jpg", cv::IMREAD_COLOR);if (image.empty()) {std::cerr << "Could not open or find the image!" << std::endl;return -1;}// 创建一个平滑后的图像副本cv::Mat smoothed_image;// 使用均值滤波平滑图像cv::blur(image, smoothed_image, cv::Size(5, 5)); // 5x5的均值滤波器// 显示原始图像和平滑后的图像cv::namedWindow("Original Image", cv::WINDOW_NORMAL);cv::namedWindow("Smoothed Image", cv::WINDOW_NORMAL);cv::imshow("Original Image", image);cv::imshow("Smoothed Image", smoothed_image);cv::waitKey(0);return 0;
}

这个示例使用cv::blur()函数将一个5x5的均值滤波器应用于输入图像,从而平滑图像。您可以根据需要选择不同大小的滤波器核以获得不同程度的平滑效果。确保已正确配置OpenCV以构建和运行C++代码。

在这里插入图片描述

使用相机实时均值滤波

#include <opencv2/opencv.hpp>// 全局变量,用于存储滑动条的值
int kernelSize = 5;// 回调函数,用于处理滑动条的值变化
void onTrackbar(int value, void* userdata) {// 从userdata中获取VideoCapture对象cv::VideoCapture* cap = static_cast<cv::VideoCapture*>(userdata);// 创建窗口cv::namedWindow("Live Camera Feed", cv::WINDOW_NORMAL);while (true) {cv::Mat frame;// 从相机中读取一帧图像*cap >> frame;if (frame.empty()) {std::cerr << "Failed to read frame from the camera!" << std::endl;break;}// 创建一个平滑后的图像副本cv::Mat smoothed_frame;// 使用均值滤波平滑图像,核的大小由滑动条值决定cv::blur(frame, smoothed_frame, cv::Size(kernelSize, kernelSize));// 显示实时摄像头图像和平滑后的图像cv::imshow("Live Camera Feed", smoothed_frame);cv::imshow("Smoothed Frame", frame);// 检查键盘输入,如果按下ESC键,退出循环char key = cv::waitKey(1);if (key == 27) // 27对应ESC键的ASCII码break;}
}int main() {// 打开本地相机(通常相机编号为0表示默认相机,如果有多个相机,则可能需要调整编号)cv::VideoCapture cap(0);if (!cap.isOpened()) {std::cerr << "Could not open the camera!" << std::endl;return -1;}// 创建窗口cv::namedWindow("Live Camera Feed", cv::WINDOW_NORMAL);// 创建滑动条cv::createTrackbar("Kernel Size", "Live Camera Feed", &kernelSize, 30, onTrackbar, &cap);// 初始化一次滑动条回调函数以显示默认值onTrackbar(kernelSize, &cap);// 释放摄像头资源和关闭窗口cap.release();cv::destroyAllWindows();return 0;
}

相关文章:

c++视觉处理---均值滤波

均值滤波 cv::blur()函数是OpenCV中用于应用均值滤波的函数。均值滤波是一种简单的平滑技术&#xff0c;它计算每个像素周围像素的平均值&#xff0c;并用该平均值替代原始像素值。这有助于降低图像中的噪声&#xff0c;并可以模糊图像的细节。 以下是cv::blur()函数的基本用…...

QT基础入门——Qt事件(五)

前言&#xff1a; 事件&#xff08;event&#xff09;是由系统或者 Qt 本身在不同的时刻发出的。当用户按下鼠标、敲下键盘&#xff0c;或者是窗口需要重新绘制的时候&#xff0c;都会发出一个相应的事件。一些事件在对用户操作做出响应时发出&#xff0c;如键盘事件等&#x…...

自学黑客方法-----(网络安全)

如果你想自学网络安全&#xff0c;首先你必须了解什么是网络安全&#xff01;&#xff0c;什么是黑客&#xff01;&#xff01; 1.无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防两面性&#xff0c;例如 Web 安全技术&#xff0c;既有 Web 渗透2.也有 Web 防…...

Dockerfile自定义容器

1、Dockerfile Dockerfile 是用于构建 Docker 镜像的文本文件&#xff0c;其中包含一系列的指令和配置&#xff0c;用于定义镜像的构建过程。通过 Dockerfile&#xff0c;你可以定义镜像的基础操作系统、依赖、环境设置、应用程序等信息&#xff0c;从而实现可复制、自动化的镜…...

(5)SpringMVC处理携带JSON格式(“key“:value)请求数据的Ajax请求

SpringMVC处理Ajax 参考文章数据交换的常见格式,如JSON格式和XML格式 请求参数的携带方式 浏览器发送到服务器的请求参数有namevalue&...(键值对)和{key:value,...}(json对象)两种格式 URL请求会将请求参数以键值对的格式拼接到请求地址后面,form表单的GET和POST请求会…...

【iOS】——仿写计算器

文章目录 一、实现思路二、实现方法三、判错处理 一、实现思路 先搭建好MVC框架&#xff0c;接着在各个模块中实现各自的任务。首先要创建好UI界面&#xff0c;接着根据UI界面的元素来与数据进行互动&#xff0c;其中创建UI界面需要用到Masonry布局。 二、实现方法 在calcu…...

公安机关警务vr综合实战模拟训练提高团队合作能力

公安出警VR虚拟仿真培训软件是VR公司利用VR虚拟现实和web3d开发技术&#xff0c;对警务执法过程中可能发生的各种场景进行还原、模拟、演练&#xff0c;结合数据分析&#xff0c;实施量化考核&#xff0c;提高学员的心理承压、应急处突、遇袭反应和临危处置综合能力。 公安出警…...

MySQL-1(12000字详解)

一&#xff1a;数据库的引入 数据库在我们以后工作中是一个非常常用的知识&#xff0c;数据库用来存储数据&#xff0c;但是有些同学可能就会疑惑了&#xff0c;存储数据用文件就可以了&#xff0c;为什么还要弄个数据库呢&#xff1f; 文件保存数据有以下几个缺点&#xff1…...

voc数据集格式与yolo数据集格式的区别及相互转化

Pascal VOC数据集是目标检测领域最常用的标准数据集之一&#xff0c;几乎所有检测方向的论文都会给出其在VOC数据集上训练并评测的效果。VOC数据集包含的信息非常全&#xff0c;它不仅被拿来做目标检测&#xff0c;也可以拿来做分割等任务&#xff0c;因此除了目标检测所需的文…...

超详细!Android Termux上如何安装MySQL,内网穿透实现公网远程访问

文章目录 前言1.安装MariaDB2.安装cpolar内网穿透工具3. 创建安全隧道映射mysql4. 公网远程连接5. 固定远程连接地址 前言 Android作为移动设备&#xff0c;尽管最初并非设计为服务器&#xff0c;但是随着技术的进步我们可以将Android配置为生产力工具&#xff0c;变成一个随身…...

TSNE降维学习

在学习使用Cora数据集时&#xff0c;输入的初始为[2708, 1433], 输入一共有2708个点&#xff0c;每个节点有1433个特征。测试集的大小为[1000, 1433]最后的输出为[1000, 7]&#xff0c;表示每个点的类别。 我们要的就是查看这个[1000, 7]的预测结果。想要将他展示在一个平面上是…...

基于Python+Selenium的web自动化测试框架详解

简介 随着Web应用程序的广泛应用和不断发展&#xff0c;Web自动化测试已经成为软件质量保证中的一个重要环节。而PythonSelenium作为一组强大的工具和框架&#xff0c;已经成为Web自动化测试领域中的热门技术之一。PythonSelenium可以帮助我们快速、准确地模拟用户行为和操作&…...

C (1094) : DS双向链表—前驱后继

Description 在双向链表中&#xff0c;A有一个指针指向了后继节点B&#xff0c;同时&#xff0c;B又有一个指向前驱节点A的指针。这样不仅能从链表头节点的位置遍历整个链表所有节点&#xff0c;也能从链表尾节点开始遍历所有节点。 对于给定的一列数据&#xff0c;按照给定的…...

mp4视频太大怎么压缩变小?

mp4视频太大怎么压缩变小&#xff1f;确实&#xff0c;很多培训和教学都转向了线上模式&#xff0c;这使得我们需要下载或分享大量的在线教学视频。然而&#xff0c;由于MP4视频文件通常较大&#xff0c;可能会遇到无法打开或发送的问题。为了解决这个问题&#xff0c;我们可以…...

利用easy excel 实现文件导出

一.创建实体类 package com.siact.product.jwp.module.report.dto;import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ContentRowHeight; import com.alib…...

LongLoRA:超长上下文,大语言模型高效微调方法

麻省理工学院和香港中文大学联合发布了LongLoRA&#xff0c;这是一种全新的微调方法&#xff0c;可以增强大语言模型的上下文能力&#xff0c;而无需消耗大量算力资源。 通常&#xff0c;想增加大语言模型的上下文处理能力&#xff0c;需要更多的算力支持。例如&#xff0c;将…...

【漏洞复现】某 NVR 视频存储管理设备远程命令执行

漏洞描述 NUUO NVR是中国台湾NUUO公司旗下的一款网络视频记录器&#xff0c;该设备存在远程命令执行漏洞&#xff0c;攻击者可利用该漏洞执行任意命令&#xff0c;进而获取服务器的权限。 免责声明 技术文章仅供参考&#xff0c;任何个人和组织使用网络应当遵守宪法法律&am…...

若依前端-应用路径发布和使用

官网的路径&#xff1a;前端手册 | RuoYi 应用路径 有些特殊情况需要部署到子路径下&#xff0c;例如&#xff1a;https://www.ruoyi.vip/admin&#xff0c;可以按照下面流程修改。 1、修改vue.config.js中的publicPath属性 publicPath: process.env.NODE_ENV "produ…...

Mojo 正式发布,Rust 能否与之匹敌?

9 月 7 日&#xff0c;Modular 公司宣布正式发布 Mojo&#xff1a;Mojo 现在已经开放本地下载——初步登陆 Linux 系统&#xff0c;并将很快提供 Mac 与 Windows 版本。据介绍&#xff0c;Mojo 最初的目标是比 Python 快 35000 倍&#xff0c;近日该团队表示&#xff0c;Mojo 将…...

opencv实现抠图,图像拼接,图像融合

在OpenCV中&#xff0c;你可以使用图像拼接、抠图和将图像的一部分放在另一张图片的指定位置。以下是示例代码&#xff0c;演示如何执行这些操作&#xff1a; 图像拼接 要将两张图像拼接在一起&#xff0c;你可以使用 cv::hconcat&#xff08;水平拼接&#xff09;和 cv::vco…...

模拟地和数字地到底怎么接?从ADC设计误区讲起,用磁珠还是直接铺铜?

数模混合电路设计中的地平面处理&#xff1a;从ADC噪声抑制到系统级EMC优化 1. 数模混合电路的接地困局&#xff1a;当磁珠成为噪声放大器 在24位ADC采样电路中&#xff0c;工程师老张遇到了一个诡异现象&#xff1a;当输入信号低于1mV时&#xff0c;采集数据会出现周期性毛刺。…...

OpenClaw自动化测试:百川2-13B量化模型多场景准确率评估

OpenClaw自动化测试&#xff1a;百川2-13B量化模型多场景准确率评估 1. 测试背景与目标 去年冬天&#xff0c;我在为团队寻找一个能处理本地自动化任务的AI助手时&#xff0c;偶然发现了OpenClaw这个开源框架。当时最让我头疼的是&#xff0c;市面上的大模型要么太贵&#xf…...

如何为Obsidian插件添加多语言支持:终极国际化指南

如何为Obsidian插件添加多语言支持&#xff1a;终极国际化指南 【免费下载链接】obsidian-i18n 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-i18n 如果你正在寻找一款能够帮助你的Obsidian插件突破语言限制的工具&#xff0c;那么Obsidian-i18n正是你需要的…...

AR.js实战指南:如何在Web浏览器中构建高效增强现实应用

AR.js实战指南&#xff1a;如何在Web浏览器中构建高效增强现实应用 【免费下载链接】AR.js Image tracking, Location Based AR, Marker tracking. All on the Web. 项目地址: https://gitcode.com/gh_mirrors/arj/AR.js 在移动设备普及的今天&#xff0c;增强现实&…...

Jetson Nano/Xavier NX上,手把手解决Realsense D435i IMU数据丢失的完整配置流程

Jetson Nano/Xavier NX上解决Realsense D435i IMU数据丢失的实战指南 当你兴奋地启动Realsense D435i摄像头&#xff0c;准备获取IMU数据来增强你的机器人项目时&#xff0c;却发现虽然IMU话题存在&#xff0c;但数据流却空空如也——这种挫败感我深有体会。作为在Jetson平台上…...

GTE模型与Visual Studio智能编程插件的集成

GTE模型与Visual Studio智能编程插件的集成 1. 引言 作为一名每天要写大量代码的程序员&#xff0c;我经常遇到这样的情况&#xff1a;突然想不起来某个API的具体用法&#xff0c;或者需要查找某个功能的实现示例。传统的做法是打开浏览器&#xff0c;在各种文档和论坛中搜索…...

OpenClaw+nanobot技能开发:从零编写自定义文件处理器

OpenClawnanobot技能开发&#xff1a;从零编写自定义文件处理器 1. 为什么需要自定义文件处理技能 上周我整理项目文档时&#xff0c;遇到了一个典型问题&#xff1a;需要将数百个Markdown文件按照"日期-标题"格式批量重命名。手动操作不仅耗时&#xff0c;还容易出…...

Gemma-3-12b-it实战教程:极简UI背后隐藏的12B模型内存映射优化策略

Gemma-3-12b-it实战教程&#xff1a;极简UI背后隐藏的12B模型内存映射优化策略 1. 项目概述 Gemma-3-12b-it是一款基于Google Gemma-3-12b-it大模型开发的本地多模态交互工具。这款工具针对12B大模型进行了全维度的CUDA性能优化&#xff0c;支持图片上传和文本提问的流式生成…...

告别复杂配置:SDXL 1.0电影级绘图工坊开箱即用体验

告别复杂配置&#xff1a;SDXL 1.0电影级绘图工坊开箱即用体验 1. 为什么选择SDXL 1.0电影级绘图工坊 在AI绘图领域&#xff0c;Stable Diffusion XL&#xff08;SDXL&#xff09;1.0代表了当前最先进的文本到图像生成技术。然而&#xff0c;对于大多数非技术背景的创作者来说…...

NsEmuTools:开源模拟器管理工具的质量保障与工程实践

NsEmuTools&#xff1a;开源模拟器管理工具的质量保障与工程实践 【免费下载链接】ns-emu-tools 一个用于安装/更新 NS 模拟器的工具 项目地址: https://gitcode.com/gh_mirrors/ns/ns-emu-tools 在开源项目的生命周期中&#xff0c;如何在快速迭代与代码质量之间找到平…...