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

OpenCV CUDA模块图像过滤------创建一个行方向的一维积分(Sum)滤波器函数createRowSumFilter()

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

算法描述

cv::cuda::createRowSumFilter 是 OpenCV CUDA 模块中的一个函数,用于创建一个行方向的一维积分(Sum)滤波器。这个滤波器通常用于加速图像处理任务,例如在计算图像的积分图(Integral Image)时非常有用。

函数原型

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

参数

参数名类型说明
srcTypeint输入图像类型。目前仅支持 CV_8UC1 类型。
dstTypeint输出图像类型。目前仅支持 CV_32FC1 类型。
ksizeint核的大小(即滤波器窗口的宽度)。
anchorint锚点位置。默认值(-1)表示锚点位于核的中心。
borderModeint像素外推方法(边界填充方式)。详细信息请参见 borderInterpolate
borderValScalar默认的边界填充值。仅在使用 BORDER_CONSTANT 模式时有效,默认为 Scalar::all(0)

代码示例

#include <opencv2/cudafilters.hpp>
#include <opencv2/cudaimgproc.hpp>
#include <opencv2/opencv.hpp>int main()
{// 创建输入输出图像cv::Mat h_input = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/Lenna.png", cv::IMREAD_GRAYSCALE );cv::cuda::GpuMat d_input, d_output;// 上传图像到 GPUd_input.upload( h_input );int ksize = 5;// 创建 Row Sum Filtercv::Ptr< cv::cuda::Filter > rowSumFilter = cv::cuda::createRowSumFilter( CV_8UC1,   // 输入类型CV_32FC1,  // 输出类型ksize      // 窗口宽度);// 应用滤波器rowSumFilter->apply( d_input, d_output );// 下载到 CPUcv::Mat h_output;d_output.download( h_output );// 手动归一化(可选:也可以只除以 ksize)h_output = h_output / ksize;                // 转换为平均值cv::convertScaleAbs( h_output, h_output );  // 转换回 uchar// 显示结果cv::imshow( "Original Image", h_input );cv::imshow( "Filtered Image", h_output );cv::waitKey( 0 );return 0;
}

运行结果

在这里插入图片描述

http://www.lryc.cn/news/2387599.html

相关文章:

  • Frequent values/gcd区间
  • 08SpringBoot高级--自动化配置
  • Deep Evidential Regression
  • 「Python教案」循环语句的使用
  • linux快速入门-VMware安装linux,配置静态ip,使用服务器连接工具连接,快照和克隆以及修改相关配置信息
  • 用户配置文件(Profile)
  • ubuntu 制作 ssl 证书
  • Vue组件技术全解析大纲
  • 轻量化开源方案——浅析PdfPatcher实际应用
  • Ansible常用Ad-Hoc 命令
  • [论文阅读]Pandora: Jailbreak GPTs by Retrieval Augmented Generation Poisoning
  • 鸿蒙OSUniApp 制作个性化的评分星级组件#三方框架 #Uniapp
  • 云效流水线Flow使用记录
  • OpenCV CUDA模块图像处理------颜色空间处理之颜色空间转换函数cvtColor()
  • 科技初创企业创新推动商业未来
  • 人工智能文科能学吗?
  • Ntfs!NtfsReadBootSector函数分析之nt!CcGetVacbMiss中得到一个nt!_VACB结构
  • 猿大师办公助手WebOffice用二进制数据流在Web前端打开Office文档
  • etcd:高可用,分布式的key-value存储系统
  • AI in Game,大模型能力与实时音视频技术融合,交出AI应用新答卷
  • 欢乐熊大话蓝牙知识11:如何打造一个低功耗蓝牙温湿度传感器?
  • Linux 安装 Remmina
  • 什么是HTTP HTTP 和 HTTPS 的区别
  • cos和dmz学习
  • 上升沿计数 stm32 中断
  • Java 各版本核心新特性的详细说明
  • Nginx 性能优化全解析:从进程到安全的深度实践
  • Pycharm and Flask 的学习心得(10)重定向
  • 单机Kafka配置ssl并在springboot使用
  • 《棒球特长生》棒球升学途径·棒球1号位