OpenCV CUDA模块图像处理-----对图像执行 均值漂移过程(Mean Shift Procedure)函数meanShiftProc()

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

算法描述

执行一个均值漂移过程(mean-shift procedure),并将处理后的点的信息(它们的颜色和位置)存储在两幅图像中。

该函数将源图像中的每个像素映射到一个新的颜色和位置,从而实现:

  • 颜色空间的聚类;
  • 空间位置的平滑;
  • 图像分割或风格化的预处理;

与 cv::cuda::meanShiftFiltering 不同的是,这个函数会输出两个结果:

  • 颜色空间的结果(dstr)
  • 空间位置的结果(dstsp)

函数原型

void cv::cuda::meanShiftProc 	
(InputArray  	src,OutputArray  	dstr,OutputArray  	dstsp,int  	sp,int  	sr,TermCriteria  	criteria = TermCriteria(TermCriteria::MAX_ITER+TermCriteria::EPS, 5, 1),Stream &  	stream = Stream::Null() 
) 		

参数

  • src 源图像。目前仅支持 CV_8UC4 类型的图像(即:8位无符号整型、4通道图像)。
  • dstr 目标图像,包含映射后点的颜色。其尺寸和类型与源图像相同。
  • dstsp 目标图像,包含映射后点的位置。其尺寸与源图像相同,类型为 CV_16SC2(即:16位有符号整型的二维坐标)。
  • sp 空间窗口半径(以像素为单位)。
  • sr 颜色窗口半径(以颜色差异为单位)。
  • criteria 终止条件。参见 TermCriteria 结构体,用于控制算法迭代的最大次数或收敛精度。
  • stream 用于异步版本的 CUDA 流(Stream)。

代码示例

#include <opencv2/cudaimgproc.hpp>
#include <opencv2/opencv.hpp>int main()
{// Step 1: 读取图像并转换为 BGRA(4通道)cv::Mat h_src = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/Lenna.png" );if ( h_src.empty() ){std::cerr << "Failed to load image!" << std::endl;return -1;}cv::Mat h_rgba;cv::cvtColor( h_src, h_rgba, cv::COLOR_BGR2BGRA );// Step 2: 上传图像到 GPUcv::cuda::GpuMat d_src, d_str, d_sp;d_src.upload( h_rgba );// Step 3: 设置参数int sp = 10;  // 空间窗口大小int sr = 30;  // 颜色窗口大小// Step 4: 执行均值漂移过程cv::cuda::meanShiftProc( d_src, d_str, d_sp, sp, sr );// Step 5: 下载结果cv::Mat h_str, h_sp;d_str.download( h_str );  // 新颜色图像(CV_8UC4)d_sp.download( h_sp );    // 新空间坐标图像(CV_32FC4 或类似)// Step 6: 显示结果cv::imshow( "Original Image", h_src );cv::imshow( "Color Space Result", h_str );cv::waitKey( 0 );return 0;
}

运行结果

在这里插入图片描述

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

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

相关文章

硬件I2C和软件I2C的区别

硬件I2C和软件I2C的区别 一、硬件I2C 1、硬件IC的局限性及学习意义 尽管硬件IC外设在STM32等微控制器中提供了标准化的通信支持&#xff0c;但在实际应用中&#xff0c;其稳定性可能存在问题。例如&#xff0c;某些情况下外设会因事件检测异常而进入死锁状态&#xff0c;仅能…

推荐12个wordpress企业网站模板

WordPress企业网站模板是一种专为企业网站设计的WordPress主题&#xff0c;旨在帮助企业创建专业、美观且易于管理的网站。这些模板通常具备响应式设计、SEO优化、多语言支持等功能&#xff0c;能够满足不同行业和企业的需求。 WordPress企业网站模板的适用场景 企业官网&…

68道Hbase高频题整理(附答案背诵版)

简述什么是Hbase数据库&#xff1f; Hbase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统&#xff0c;它利用HBase技术在HDFS上提供了类似于Bigtable的能力。换句话说&#xff0c;Hbase是Apache Hadoop生态系统中的一部分&#xff0c;可以为大数据应用提供快速的随机…

PyTorch——卷积操作(2)

二维矩阵 [[ ]] 这里面conv2d(N,C,H,W)里面的四个是 N就是batch size也就是输入图片的数量&#xff0c;C就是通道数这只是一个二维张量所以通道为1&#xff0c;H就是高&#xff0c;W就是宽&#xff0c;所以是1 1 5 5 卷积核 reshape 第一个参数是batch size样本数量 第二个参数…

Linux之MySQL安装篇

1.确保Yum环境是否能正常使用 使用yum环境进行软件的安装 yum -y install mysql-server mysql2.确保软件包已正常完成安装 3.设置防火墙和selinux配置 ## 关闭防火墙 systemctl stop firewalld## 修该selinux配置 vim /etc/selinux/config 将seliuxenforcing修改为sel…

Devops系列---python基础篇二

1、列表 1.1 概念 格式&#xff1a; 名称 [ “元素1”,“元素2”,…] #定义一个列表 computer ["主机","键盘","显示器","鼠标"]类型方法用途查index(“元素”)查看元素索引位置count(“元素”)统计元素出现的次数reverse()倒序排…

LeetCode - 234. 回文链表

目录 题目 快慢双指针步骤 读者可能的错误写法 正确的写法 题目 234. 回文链表 - 力扣&#xff08;LeetCode&#xff09; 快慢双指针步骤 找到链表的中点&#xff08;find_mid函数&#xff09;&#xff1a; 使用快慢指针&#xff0c;慢指针每次走一步&#xff0c;快指针…

UniApp 全生命周期钩子详解

&#x1f449; 整理不易&#xff0c;如果本文对你有帮助&#xff0c;欢迎点个【赞 &#x1f44d;】【收藏 ⭐】【关注 &#x1f9e1;】 后续我们还将继续分享实用的 UniApp 教程&#xff0c;比如&#xff1a; 文件上传全局请求封装状态管理动态路由等… &#x1f4ee; 有任何…

探索NautilusTrader:下一代开源算法交易平台的革命性突破

在金融科技的浪潮中,量化交易领域正经历一场由开源技术驱动的变革。NautilusTrader(https://github.com/nautechsystems/nautilus_trader)作为一款高性能、生产级的算法交易平台,正以其创新的设计理念和强大的技术架构重塑开发者的策略研发流程。 一、核心定位:打破回测与…

QT开发技术【ffmpeg + QAudioOutput】音乐播放器

一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下&#xff0c;音视频内容犹如璀璨繁星&#xff0c;点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频&#xff0c;到在线课堂中知识渊博的专家授课&#xff0c;再到影视平台上扣人心弦的高清大片&#xff0c;音…

[论文阅读] (38)基于大模型的威胁情报分析与知识图谱构建论文总结(读书笔记)

《娜璋带你读论文》系列主要是督促自己阅读优秀论文及听取学术讲座&#xff0c;并分享给大家&#xff0c;希望您喜欢。由于作者的英文水平和学术能力不高&#xff0c;需要不断提升&#xff0c;所以还请大家批评指正&#xff0c;非常欢迎大家给我留言评论&#xff0c;学术路上期…

python批量解析提取word内容到excel

# 基于Python实现Word文档内容批量提取与Excel自动化存储 ## 引言 在日常办公场景中&#xff0c;常需要从大量Word文档中提取结构化数据并整理到Excel表格中。传统手动操作效率低下&#xff0c;本文介绍如何通过Python实现自动化批处理&#xff0c;使用python-docx和openpyxl…

win32相关(远程线程和远程线程注入)

远程线程和远程线程注入 CreateRemoteThread函数 作用&#xff1a;创建在另一个进程的虚拟地址空间中运行的线程 HANDLE CreateRemoteThread([in] HANDLE hProcess, // 需要在哪个进程中创建线程[in] LPSECURITY_ATTRIBUTES lpThreadAttributes, // 安全…

Flyway

Flyway 是一个强大的数据库版本控制和迁移工具&#xff0c;主要用于管理数据库结构的变更和演进。 核心作用 1. 数据库版本控制 追踪数据库变更&#xff1a;记录每次数据库结构的修改版本管理&#xff1a;为每个变更分配版本号变更历史&#xff1a;完整记录数据库演进过程 …

【深尚想】OPA855QDSGRQ1运算放大器IC德州仪器TI汽车级高速8GHz增益带宽的全面解析

1. 元器件定义与核心特性 OPA855QDSGRQ1 是德州仪器&#xff08;TI&#xff09;推出的一款 汽车级高速运算放大器&#xff0c;专为宽带跨阻放大&#xff08;TIA&#xff09;和电压放大应用优化。核心特性包括&#xff1a; 超高速性能&#xff1a;增益带宽积&#xff08;GBWP&a…

机器学习实验八--基于pca的人脸识别

基于pca的人脸识别 引言&#xff1a;pca1.pca是什么2.PCA算法的基本步骤 实例&#xff1a;人脸识别1.实验目的2.实现步骤3.代码实现4.实验结果5.实验总结 引言&#xff1a;pca 1.pca是什么 pca是一种统计方法&#xff0c;它可以通过正交变换将一组可能相关的变量转换成一组线…

【LLIE专题】NTIRE 2025 低照度图像增强第二名方案

Towards Scale-Aware Low-Light Enhancement via Structure-Guided Transformer Design&#xff08;2025&#xff0c;NTIRE&#xff09; 专题介绍一、研究背景二、SG-LLIE方法1.和Retinexformer方案对比2.总体方案及创新点3.详细方案3.1 结构先验提取3.2 网络结构3.3 损失函数 …

泊松融合的介绍和OpenCV教程

泊松融合 Poisson Blending 简介 核心思想 泊松融合的目标是在保留剪切图像的梯度(纹理)信息的同时,使融合结果在边界区域平滑过渡到目标图像中。换句话说,它在融合区域中重建一个图像,使其梯度尽可能接近源图像的梯度,并且边界贴合目标图像。 数学描述 泊松融合将问题…

Unity协程Coroutine与UniTask对比

原理对比 CoroutineUniTask本质IEnumerator 的协作调度器async/await 状态机&#xff08;IAsyncStateMachine&#xff09;调度方式Unity 内部调用 MoveNext()自建 PlayerLoopRunner 控制状态推进内存管理引用类型&#xff0c;频繁分配 GC结构体 UniTask&#xff0c;低 GC 压力…

MAC软件打开提示已损坏:“已损坏,打不开。您应将它移到废纸篓“

打开「终端.app」&#xff0c;输入以下命令并回车&#xff0c;输入开机密码回车 sudo spctl --master-disable 按照上述步骤操作完成后&#xff0c;打开「系统偏好设置」-「安全与隐私」-「通用」&#xff0c;确保已经修改为「任何来源」。 打开「终端.app」&#xff0c;输入…