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

OpenCV CUDA模块特征检测与描述------用于创建一个最大值盒式滤波器(Max Box Filter)函数createBoxMaxFilter()

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

算法描述

createBoxMaxFilter()函数创建的是一个 最大值滤波器(Maximum Filter),它对图像中每个像素邻域内的像素值取最大值。常用于:

  • 去除暗噪声(dark noise)
  • 提取局部最大值区域
  • 膨胀操作的替代方法之一

与 cv::cuda::createBoxFilter 类似,但它的卷积核不是加权平均,而是取最大值。

函数原型

Ptr<Filter> cv::cuda::createBoxMaxFilter 	
(int  	srcType,Size  	ksize,Point  	anchor = Point(-1, -1),int  	borderMode = BORDER_DEFAULT,Scalar  	borderVal = Scalar::all(0) ) 		

参数

  • srcType 输入/输出图像类型。仅支持 CV_8UC1 和 CV_8UC4。

  • ksize 核大小(卷积核的宽度和高度)。

  • anchor 锚点。默认值 (-1) 表示锚点位于卷积核中心。

  • borderMode 像素外推方法(边界填充方式)。详细信息,请参见 borderInterpolate。

  • borderVal 默认边界值

代码示例

#include <opencv2/cudafilters.hpp>
#include <opencv2/cudaimgproc.hpp>
#include <opencv2/opencv.hpp>int main()
{// 读取图像cv::Mat h_img = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/Lenna.png", cv::IMREAD_GRAYSCALE );  // 确保是单通道图像if ( h_img.empty() ){std::cerr << "Error: Image not found!" << std::endl;return -1;}// 上传图像到 GPUcv::cuda::GpuMat d_src, d_dst;d_src.upload( h_img );// 创建 Max Box Filter(支持 CV_8UC1 或 CV_32FC1)cv::Ptr< cv::cuda::Filter > maxFilter = cv::cuda::createBoxMaxFilter( d_src.type(),         // 输入图像类型cv::Size( 5, 5 ),     // 卷积核大小cv::Point( -1, -1 ),  // 锚点默认为中心cv::BORDER_DEFAULT    // 默认边界处理);// 应用滤波器maxFilter->apply( d_src, d_dst );// 下载结果回 CPUcv::Mat h_dst;d_dst.download( h_dst );// 显示结果cv::imshow( "Original", h_img );cv::imshow( "Max Filtered", h_dst );cv::waitKey( 0 );return 0;
}

运行结果

在这里插入图片描述

http://www.xdnf.cn/news/565993.html

相关文章:

  • PostgreSQL日志维护
  • 阿里云合集(不定期更新)
  • 适合初学者的 Blender 第二部分
  • 1.4 C++之运算符与表达式
  • leetcode hot100刷题日记——8.合并区间
  • java综合交易所13国语言,股票,区块链,外汇,自带客服系统运营级,有测试
  • Circle宣布Circle Payments Network主网上线
  • digitalworld.local: VENGEANCE靶场
  • 网络框架二次封装:基于Kotlin的高扩展性网络请求框架完整实现
  • 网工每日一练
  • 禁止window安全中心乱删文件
  • HarmonyOS基础组件:Button三种类型的使用
  • 百度Q1财报:总营收325亿元超预期 智能云同比增速达42%
  • OceanBase 开发者大会,拥抱 Data*AI 战略,构建 AI 数据底座
  • 开源STM32F429汽车仪表盘基于LVGL界面
  • 游戏引擎学习第303天:尝试分开对Y轴和Z轴进行排序
  • SkyWalking 报错:sw_profile_task 索引缺失问题分析与解决
  • 【Java学习笔记】main方法
  • 虚幻基础:摄像机
  • 真实世界中的贝叶斯网络:Bootstrap、模型平均与非齐次动态的科研应用
  • GPT 等decoder系列常见的下游任务
  • 【VSCode】安装与 ssh 免密登录
  • 基于Springboot + vue3实现的流动摊位管理系统
  • curl: (35) Peer reports incompatible or unsupported protocol version.
  • 弱网服务器群到底有什么用
  • [案例七] NX二次开发标识特征的导入与布尔运算
  • YOLO训练输入尺寸代表什么 --input_width 和 --input_height 参数
  • java 集合总结
  • 小黑黑prompt表述短语积累1
  • 作物遗传与种质创新利用全国重点实验室-随笔10