OpenCV CUDA 模块中用于在 GPU 上计算两个数组对应元素差值的绝对值函数absdiff(

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

算法描述

void cv::cuda::absdiff 是 OpenCV CUDA 模块中的一个函数,用于在 GPU 上计算两个数组对应元素差值的绝对值。

该函数会逐元素计算两个输入矩阵 src1 和 src2 的差值,并取其绝对值,结果保存在输出矩阵 dst 中。

适用于图像比较、差异检测、视频运动分析等场景。

函数原型

cpp 复制代码
void cv::cuda::absdiff 
(
 	InputArray  	src1,
	InputArray  	src2,
	OutputArray  	dst,
	Stream &  	stream = Stream::Null() 
) 		

参数

参数 类型 描述
src1 InputArray 第一个输入矩阵,支持多种数据类型(如 CV_8U, CV_32F 等)
src2 InputArray 第二个输入矩阵,必须与 src1 尺寸和类型相同
dst OutputArray 输出结果矩阵,尺寸与输入相同,类型通常为 CV_32F 或匹配输入
stream Stream& 可选参数,指定 CUDA 流以实现异步执行,默认是同步执行

代码示例

cpp 复制代码
#include <opencv2/opencv.hpp>
#include <opencv2/cudaarithm.hpp>  // 正确包含 CUDA 算术运算模块

int main() {
    // 创建两个 CPU 矩阵并初始化
    cv::Mat h_src1 = (cv::Mat_<uchar>(2, 2) << 100, 150, 200, 250);
    cv::Mat h_src2 = (cv::Mat_<uchar>(2, 2) << 90, 160, 190, 255);

    // 上传到 GPU
    cv::cuda::GpuMat d_src1, d_src2;
    d_src1.upload(h_src1);
    d_src2.upload(h_src2);

    // 创建输出 GPU 矩阵
    cv::cuda::GpuMat d_dst;

    // 调用 absdiff 函数
    cv::cuda::absdiff(d_src1, d_src2, d_dst);

    // 下载回 CPU 并显示
    cv::Mat h_dst;
    d_dst.download(h_dst);

    std::cout << "absdiff 结果:\n" << h_dst << std::endl;

    return 0;
}

运行结果

bash 复制代码
absdiff 结果:
[ 10,  10;
  10,   5]
相关推荐
liangshanbo12156 分钟前
Web Worker 在 AI 前端应用中有什么具体使用场景?
前端·人工智能
daad7776 分钟前
手写一个 LPC 语音 Codec:从一帧真实音频看编码到解码的全过程
人工智能·音视频·语音识别
nap-joker6 分钟前
解耦多模态对抗自编码器:在不完全多模态神经图像下婴儿年龄预测中的应用
人工智能·特征解耦·婴儿年龄预测·vae-based
Martina_03217 分钟前
山谷地形下雨后湿痕总往坡上爬?用6步检查高度场、流向遮罩与分区加载
人工智能·游戏·数学建模·3d·自然语言处理·aigc·关卡设计
跟我学机器学习9 分钟前
基于两阶段索引的RAG Agent:检索增强与 Agent 结合实践
人工智能·深度学习·语言模型
Keep_Trying_Go11 分钟前
MobileSAM 论文方法详解
人工智能·深度学习·计算机视觉·分割算法
ZhengEnCi16 分钟前
AI 生成 App 原型图:一句话真能画出可交互界面吗?从 Text-to-Prototype(文本生成原型)到 D2C(Design to Code,设计转代
人工智能
学弟17 分钟前
内涵:sam系列论文梳理
人工智能
weixin_4462608520 分钟前
利用千问Qwen3.8-27B 开源模型越狱版自动CTF题目解题
人工智能
LaughingZhu22 分钟前
Product Hunt 每日热榜 | 2026-10-07
人工智能·深度学习·神经网络·搜索引擎·百度