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

算法描述

OpenCV 的CUDA并行计算模块(cv::cudev)中的一个设备端内联函数,用于在CUDA核函数中对两个uchar2类型像素值进行逐通道最小值比较。

对两个 uchar2 类型变量(即 2 通道无符号字符类型)进行逐通道比较,返回每个通道中的最小值。
它常用于 GPU 加速的图像融合、像素比较、背景建模等场景。

函数原型

__device__ __forceinline__ uchar2 cv::cudev::min 	( 	const uchar2 &  	a,const uchar2 &  	b ) 	

参数

  • a const uchar2& 第一个输入像素值(x, y 两个通道)
  • b const uchar2& 第二个输入像素值

返回值

  • 返回一个新的 uchar2 值;
  • 每个通道的值为 a.x 和 b.x 的最小值,a.y 和 b.y 的最小值。

代码


#include <opencv2/cudaimgproc.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/cudev/util/vec_math.hpp>using namespace cv;
using namespace cv::cudev;// CUDA 核函数:取两个 uchar2 像素的最小值
template <typename Ptr1, typename Ptr2, typename DstPtr>
__global__ void minKernel(Ptr1 src1, Ptr2 src2, DstPtr dst, int width, int height) {int x = blockIdx.x * blockDim.x + threadIdx.x;int y = blockIdx.y * blockDim.y + threadIdx.y;if (x < width && y < height) {// 获取两个图像的像素值uchar2 val1 = src1(y, x);uchar2 val2 = src2(y, x);// 取最小值并写入输出图像dst(y, x) = min(val1, val2);}
}int main() {// 加载两张图像(假设尺寸相同),转换为 2 通道格式(比如合并两个灰度图为 uchar2)Mat h_img1 = imread("/media/dingxin/data/study/OpenCV/sources/images/img0.jpg", IMREAD_GRAYSCALE);Mat h_img2 = imread("/media/dingxin/data/study/OpenCV/sources/images/img1.jpg", IMREAD_GRAYSCALE);if (h_img1.empty() || h_img2.empty()) {std::cerr << "Failed to load images!" << std::endl;return -1;}// 转换为 2 通道图像(uchar2)Mat h_2ch[] = {h_img1, h_img2};Mat h_combined;merge(h_2ch, 2, h_combined);  // 合并为 CV_8UC2// 上传到 GPUcuda::GpuMat d_combined, d_result;d_combined.upload(h_combined);d_result.create(d_combined.size(), d_combined.type());// 构造访问器auto ptr = PtrStepSz<uchar2>(d_combined);auto dptr = PtrStepSz<uchar2>(d_result);// 设置核函数参数dim3 block(16, 16);dim3 grid((d_combined.cols + block.x - 1) / block.x,(d_combined.rows + block.y - 1) / block.y);// 调用核函数minKernel<<<grid, block>>>(ptr, ptr, dptr, d_combined.cols, d_combined.rows);cudaDeviceSynchronize();// 分离通道并显示结果Mat h_result;d_result.download(h_result);std::vector<Mat> channels;split(h_result, channels);imshow("Min Channel 1", channels[0]);imshow("Min Channel 2", channels[1]);waitKey(0);return 0;
}

运行结果

在这里插入图片描述

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

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

相关文章

proteus实现stm32按键控制LED灯流水灯方向

一、新建工程 1、工程命名 2、选择工程存储位置 3、默认下一步 4、默认下一步 5、选择没有固件项目&#xff0c;下一步 二、器件放置并连线 1、点击左边工具栏中运放的形状的符号 2、再点击‘P’&#xff0c;搜索器件 3、搜索器件并放置连线 按键控制LED需要的器件有&#…

华为云Flexus+DeepSeek征文 | 让运维更智能:Chaterm AI终端工具与华为云ModelArts Studio深度集成指南

华为云FlexusDeepSeek征文 | 让运维更智能&#xff1a;Chaterm AI终端工具与华为云ModelArts Studio深度集成指南 引言一、ModelArts Studio平台介绍华为云ModelArts Studio简介ModelArts Studio主要特点 二、Chaterm介绍Chaterm简介Chaterm主要特点 三、安装Chaterm工具下载C…

湖北理元理律师事务所债务解法:从法律技术到生活重建

数据透视&#xff1a; 2023年武汉法院受理债务纠纷案11.4万件&#xff0c;其中37%因不当还款规划导致债务雪球效应。 一、债务危机的法律归因 通过分析1200例债务咨询案例&#xff0c;发现三大共性法律认知盲区&#xff1a; 担保责任误判 某企业主为朋友担保200万&#xff0…

小程序学习笔记:加载效果、上拉加载与节流处理

在微信小程序开发过程中&#xff0c;优化用户体验是非常重要的一环。今天我们就来分享如何在小程序中实现加载提示效果、上拉触底加载下一页数据以及对上拉触底事件进行节流处理&#xff0c;让你的小程序更加流畅和高效。 一、添加 loading 提示效果 在小程序中&#xff0c;当…

计算机网络:【socket】【UDP】【地址转换函数】【TCP】

一.socket 1.1socket接口 它返回的是一个文件描述符。创建socket文件描述符(TCP/UDP,客户端服务器) • socket()打开一个网络通讯端口,如果成功的话,就像 open()一样返回一个文件描 述符; • 应用程序可以像读写文件一样用 read/write 在网络上收发数据; • 如果 socket()调用…

机器人轨迹跟踪控制与动力学模型详解

1. 机器人控制的本质&#xff1a;通过关节扭矩执行轨迹 机器人控制的核心目标是让机器人关节精确跟踪期望轨迹 ( q d , q ˙ d , q d ) (q_d, \dot{q}_d, \ddot{q}_d) (qd​,q˙​d​,q​d​)。为此&#xff0c;控制器需根据当前状态 ( q , q ˙ ) (q, \dot{q}) (q,q˙​)计…

智能办公与科研革命:ChatGPT+DeepSeek大模型在论文撰写、数据分析与AI建模中的实践指南

随着人工智能技术的快速发展&#xff0c;大语言模型如ChatGPT和DeepSeek在科研领域的应用正在为科研人员提供强大的支持。这些模型通过深度学习和大规模语料库训练&#xff0c;能够帮助科研人员高效地筛选文献、生成论文内容、进行数据分析和优化机器学习模型。 ChatGPT和Deep…

运营商场景下的实时脱敏方案:PB 级日志流的分布式处理架构

在数字化浪潮中&#xff0c;运营商积累了海量数据&#xff0c;涵盖用户信息、通信记录、业务运营数据等。这些数据不仅是运营商业务运营的关键资产&#xff0c;也是创新服务、精准营销的核心驱动力。然而&#xff0c;随着数据量呈指数级增长&#xff0c;运营商每日需处理 PB 级…

docker+n8n的工作流中无法使用本地ollama服务的问题

使用docker创建n8n服务后&#xff0c;工作流中不想用大模型付费API测试&#xff0c;想用本地大模型来跑&#xff0c;刚好电脑上装了ollama&#xff0c;就试了下添加ollama节点来替代大模型付费API&#xff0c;结果就遇到了以下问题 ollama正常运行中 但是工作流会卡在这&…

通过交互式可视化探索波动方程-AI云计算数值分析和代码验证

波动方程是一个基本的数学模型&#xff0c;它描述了各种类型的波&#xff08;包括机械波、声波、电磁波和流体波&#xff09;如何通过不同的介质传播&#xff0c;这使得它对于物理学、工程学和其他科学学科中声学、光学、医学成像和电信等领域的预测和设计都至关重要。 波动方程…

10授权

目录 本节大纲 一、权限管理 1. 认证 2. 授权 二、授权核心概念 三、权限管理策略 1. 基于 URL 权限管理 权限表达式 2. 基于 方法 权限管理 EnableGlobalMethodSecurity 四、基本用法 五、原理分析 六、实战 1. 简介 2. 库表设计 3. 创建 springboot 应用 本节…

线性规划模型

线性规划算是数学建模中最基础的模型了&#xff0c;其典型特征就是线性和有限资源&#xff0c;即在一组线性约束条件下&#xff0c;求解一个线性目标函数的最大值或最小值问题&#xff1a; 其中x 是决策变量向量&#xff0c;c 是目标函数系数向量&#xff0c;a 和 b 分别是约束…

华为云Flexus+DeepSeek征文|体验华为云ModelArts快速搭建Dify-LLM应用开发平台并创建知识库大模型工作流查询数据库数据

华为云FlexusDeepSeek征文&#xff5c;体验华为云ModelArts快速搭建Dify-LLM应用开发平台并创建知识库大模型工作流查询数据库数据 什么是华为云ModelArts 华为云ModelArts ModelArts是华为云提供的全流程AI开发平台&#xff0c;覆盖从数据准备到模型部署的全生命周期管理&am…

WPF中Style和Template异同

在WPF&#xff08;Windows Presentation Foundation&#xff09;中&#xff0c;Style和Template是两个核心概念&#xff0c;用于控制UI元素的外观和行为&#xff0c;但它们的职责和使用场景有明显区别。以下是详细分析&#xff1a; 一、基本概念 1. Style&#xff08;样式&am…

针对 DVWA 中 Command Injection 模块的乱码问题及解决办法

目录 根本原因 解决办法 优化说明 适用范围 系统兼容性 在 DVWA 的 Command Injection 模块中执行系统命令时&#xff0c;返回结果出现乱码&#xff08;如图1所示&#xff09;。 根本原因 DVWA 默认使用 UTF-8 编码&#xff0c;而部分系统命令&#xff08;如 Windows 的…

Linux获取ImageNet数据集方法及小规模imagenet

一、数据集下载 ImageNet官方链接&#xff1a;ImageNet Linux命令直接下载&#xff1a; 训练集 wget https://image-net.org/data/ILSVRC/2012/ILSVRC2012_img_train.tar --no-check-certificate验证集 wget https://image-net.org/data/ILSVRC/2012/ILSVRC2012_img_val.t…

JAVA八股文:异常有哪些种类,可以举几个例子吗?Throwable类有哪些常见方法?

Throwable、Error 与 Exception 所有的异常类型都继承自 java.lang.Throwable。 其中 Error&#xff08;比如 OutOfMemoryError、StackOverflowError、类加载失败等&#xff09;表示 JVM 自身或运行环境的问题&#xff0c;不应该也通常无法由应用程序去捕获或恢复&#xff0c;…

.NetCore+Vue快速生产框架开发详细方案

文章目录 1. 项目概述 1.1 项目背景1.2 项目目标1.3 核心功能 2. 技术栈选择 2.1 后端技术栈2.2 前端技术栈2.3 开发工具 3. 系统架构设计 3.1 整体架构3.2 后端架构设计3.3 前端架构设计3.4 微服务考虑 4. 后端.NET核心设计 4.1 项目结构4.2 核心模块设计4.2.1 用户模块4.2.2 …

WPF学习笔记(18)触发器Trigger

触发器 1. 概述2. 详解2.1. Trigger 用法2.2. MultiTrigger 用法2.3. DataTrigger 用法2.4. EventTrigger 用法 总结 1. 概述 官方文档&#xff1a;https://learn.microsoft.com/zh-cn/dotnet/api/system.windows.trigger?viewnetframework-4.8 2. 详解 在Style中可以指定触…

记本好书:矩阵力量:线性代数全彩图解+微课+Python编程

书名&#xff1a;矩阵力量&#xff1a;线性代数全彩图解微课Python编程 作者&#xff1a;姜伟生 出版社&#xff1a;清华大学出版社 出版时间&#xff1a;2023-06-01 ISBN&#xff1a;9787302632511 品牌方&#xff1a;清华大学出版社有限公司 发现一本好书&#xff0c;但是一…