OpenCV图像滤波(20)模糊处理函数stackBlur()的使用

news2024/11/16 10:39:10
  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

stackBlur() 函数用于对图像进行模糊处理。该函数对图像应用了 stackBlur 技术。stackBlur 可以生成与高斯模糊相似的结果,而且随着模糊内核大小的增加,处理时间不会显著增长。它在扫描图像的过程中创建了一个移动的颜色堆栈。因此,在处理每一像素时只需要向堆栈的右侧添加一个新的颜色块,并移除最左侧的颜色。堆栈顶部的其他颜色则根据它们的位置(右侧或左侧)被增加或减少一个单位。唯一支持的边界类型是 BORDER_REPLICATE(边界复制)。原始论文由 Mario Klingemann 提出,可在此处找到:http://underdestruction.com/2004/02/25/stackblur-2004。

stackBlur 的主要优点在于它能够快速地对图像进行模糊处理,即使在较大的内核尺寸下也能保持高效的性能。这是因为它采用了特殊的算法来更新堆栈中的颜色值,而不是重新计算整个内核范围内的平均值。这种方法使得 stackBlur 成为了实时图像处理和需要大量模糊效果的应用的理想选择。

函数原型

void cv::stackBlur	
(
	InputArray 	src,
	OutputArray 	dst,
	Size 	ksize 
)		

参数

  • 参数 src 输入图像。通道数可以是任意的,但是图像深度应该是 CV_8U(无符号8位整数),CV_16U(无符号16位整数),CV_16S(有符号16位整数),或者 CV_32F(32位浮点数)。
  • 参数 dst 输出图像,与输入图像 src 具有相同的尺寸和类型。
  • 参数 ksize stack-blur 内核的尺寸。ksize.width 和 ksize.height 可以不同,但都必须是正数且为奇数。

示例代码

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

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
    // Load an image
    Mat image = imread("/media/dingxin/data/study/OpenCV/sources/images/erik.jpg");

    // Check if the image is loaded successfully
    if (image.empty())
    {
        cout << "Error: Image not found." << endl;
        return -1;
    }

       
    cv::Size sz2Sh( 400, 600 );
    cv::resize( image, image, sz2Sh, 0, 0, cv::INTER_LINEAR_EXACT );


    // Set the blur kernel size
    int kernelSize = 13;  // You can adjust this value for different blurring effects

    // Perform box blur
    Mat blurredImage;
    stackBlur(image, blurredImage, Size(kernelSize, kernelSize));

    
    imshow("Original Image", image);
    imshow("Blurred Image", blurredImage);

    // Wait for a key press and then close all windows
    waitKey(0);
    destroyAllWindows();

    return 0;
}

运行结果

在这里插入图片描述

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

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

相关文章

ICMAN水位接近式检测方案(非接触式)

ICMAN水位液位接近式检测方案&#xff08;非接触式&#xff09; 我们的很多家用电器都会需要&#xff1a;液位检测 缺水&溢水提醒保护、高低液位提醒 液位传感器 像健康家电——烧水煮茶熬养生汤的烧水壶、豆浆机、养生壶等需要缺水保护和防溢液提醒&#xff1b; 像清洁…

ArcGis在线地图插件Maponline(好用版)

ArcGis加载插件&#xff0c;可在线浏览谷歌地图、天地图、高德地图、必应地图等多种&#xff0c;包含街道、影像、标注地图等信息&#xff08;谷歌地图需自备上网手段&#xff09;&#xff0c;免费注册账号即可使用&#xff0c;可加载无水印底图。 与大地2000坐标无需配准直接使…

【吊打面试官系列-Memcached面试题】说说memcached 和 MySQL 的 query cache 相比,有什么优缺点?

大家好&#xff0c;我是锋哥。今天分享关于 【说说memcached 和 MySQL 的 query cache 相比&#xff0c;有什么优缺点&#xff1f; 】面试题&#xff0c;希望对大家有帮助&#xff1b; 说说memcached 和 MySQL 的 query cache 相比&#xff0c;有什么优缺点&#xff1f; 把 mem…

C语言典型例题45

《C程序设计教程&#xff08;第四版&#xff09;——谭浩强》 习题3.5 给一个不多于5位的正整数&#xff0c;要求&#xff1a; 1.求出它是几位数&#xff1b; 2.分别输出每一位数字&#xff1b; 3.按逆序输出各位数字&#xff0c;例如&#xff1…

修改了原神4.8版本升级数据表

<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>原神4.8版本升级数据表</title> </head&…

jQuery的遍历和动画

一&#xff0c;前言 jQuery提供了一系列的方法来帮助开发者轻松地遍历和操作DOM元素集合&#xff0c;同时jQuery 提供了一些简单的方法来实现基本的动画效果&#xff0c;如淡入淡出、滑动等&#xff0c;同时还允许用户创建自定义动画序列。 二&#xff0c;遍历 &#xff08;1&…

【TCP/IP】确认应答、超时重传机制和TCP报头

TCP 相关机制 TCP 基本特点&#xff1a;有连接、可靠传输、面向字节流、全双工 有连接、面向字节流和全双工都能在前面的代码中体现有连接&#xff1a;必须要先调用 accept 建立联系才能处理面向字节流&#xff1a;会拿到 clientSocket 对象的 InputStream 和 OutputStream&a…

[书生大模型实战营][L0][Task2] Python 开发前置知识

0. 任务&#xff1a;在 InternStudio 环境中实现功能&#xff1a; python 实现 wordcount函数&#xff0c;统计英文字符串单词的使用频率&#xff0c;并返回字典&#xff1b;vscode 远程调试 InternStudio 中的 python 代码 1. wordcount 函数实现 string.punctuation 是一个…

从【人工智能】到【计算机视觉】,【深度学习】引领的未来科技创新与变革

前几天偶然发现了一个超棒的人工智能学习网站&#xff0c;内容通俗易懂&#xff0c;讲解风趣幽默&#xff0c;简直让人欲罢不能。忍不住分享给大家&#xff0c;点击这里立刻跳转&#xff0c;开启你的AI学习之旅吧&#xff01; 前言 – 人工智能教程https://www.captainbed.cn/l…

CentOS迁移案例 | 保障轨道交通安全、发挥基础设施效能,麒麟信安操作系统支撑某市轨道交通畅行无忧

为缓解城市交通拥堵难题&#xff0c;某市轨道交通公司计划新建一条贯穿城市关键区域、沿路设立20座站点的轨道交通线路&#xff0c;并基于麒麟信安操作系统构建轨道交通信号系统。 轨道交通信号系统是列车核心控制系统&#xff0c;负责列车运行的自动化控制&#xff0c;及对整…

【python】python代码打包工具cx_Freeze的介绍、原理、用法及实战案例分析

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

学习机MP3语音芯片方案:WMV硬解码芯片,N9301-316

在当今数字化时代&#xff0c;学习机已不再仅仅是静态的物品。随着技术的快速发展和不断探索创新方法&#xff0c;人们将音乐与互动学习相融合&#xff0c;为儿童创造出更加富有创意和学习机产品。其中&#xff0c;九芯电子N9301系列MP3解码芯片在这一领域的应用正在崭露头角&a…

Android常见控件(一)

目录 前言 一、TextView控件 常用属性 二、Button控件 设置点击事件的方式 1.在布局文件中指定onClick的值 2.使用匿名内部类 3.通过实现onClickListener接口 三、ImageView控件 常见属性 src与background的区别 scaleType 1.ScaleType.FIT_CENTER默认 2.ScaleTy…

Java学习高级五

API 常用API Object类 Object类的常见方法

数据结构与算法 - 双指针

一、移动零 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12]输出: [1,3,12,0,0]示例 2: 输入: nums …

Linux文件传输命令介绍(非常详细)零基础入门到精通,收藏这一篇就够了

文件传输命令 1 ftp&#xff1a;传统的文件传输协议,使用广泛但安全性较低。 sftp&#xff1a;基于SSH的安全文件传输协议,提供交互式的文件管理功能。 tftp&#xff1a;简单的文件传输协议,主要用于网络设备的固件升级。 lftp&#xff1a;功能强大的FTP客户端,支持多种文件…

2024最新外卖霸王餐小程序系统源码|霸王餐美团/饿了么系统 粉丝裂变+私域运营+持续稳定

前言&#xff1a; 外卖霸王餐小程序是一种结合了外卖点餐和优惠返利功能的微信小程序&#xff0c;为用户提供了一种便捷的点餐体验和优惠福利。 一、霸王餐系统小程序是什么&#xff1f; 霸王餐系统是指一种特殊的营销活动平台&#xff0c;商家通过该平台提供免费或大幅度折…

【深度学习】嘿马深度学习笔记第3篇:TensorFlow介绍,学习目标【附代码文档】

本教程的知识点为&#xff1a;深度学习介绍 1.1 深度学习与机器学习的区别 TensorFlow介绍 2.4 张量 2.4.1 张量(Tensor) 2.4.1.1 张量的类型 TensorFlow介绍 1.2 神经网络基础 1.2.1 Logistic回归 1.2.1.1 Logistic回归 TensorFlow介绍 总结 每日作业 神经网络与tf.keras 1.3 …

Netty深度剖析(2)— 事件调度

我们在上一节已经简单的介绍了一下 Netty 的事件调度&#xff0c;可以说 Netty 高性能的奥秘主要就在于其核心的事件循环和任务处理引擎&#xff0c;那么它究竟是如何实现的呢&#xff1f;这一节我们来详细探讨一下 Reactor 线程模型 在解释 Netty 事件循环的实现原理前&#…

C语言enum枚举

目录 开头1.什么是枚举?2.枚举的优缺点优点缺点 3.枚举的实际用途(这里只列举其一)简易计算器枚举版…… 结尾 开头 大家好&#xff0c;我叫这是我58。今天&#xff0c;我们要学关于C语言枚举的一些知识。 1.什么是枚举? 枚举&#xff0c;就是一一列举的意思&#xff0c;比…