OpenCV CUDA模块设备层-----反余弦(arccos)运算函数acos()

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

算法描述

函数acos()是 OpenCV 的 cv::cudev 模块中定义的一个 设备端数学函数,用于在 CUDA 核函数中对 uchar1 类型执行反余弦(arccos)运算。

这个函数的作用是将 uchar1 类型的输入转换为 float,然后调用 CUDA 的内置函数 ::acosf() 计算其反余弦值(单位:弧度),结果返回为 float1 类型。

函数原型

cpp 复制代码
__device__ __forceinline__ float1 cv::cudev::acos 	( 	const uchar1 &  	a	) 	

参数

  • a: 一个 uchar1 类型的输入值(即 unsigned char 类型的像素值,范围为 0~255)

返回值

  • float1: 一个单通道浮点数向量(本质就是一个 float)

示例代码

cpp 复制代码
#include <opencv2/opencv.hpp>
#include <opencv2/cudev/util/vec_math.hpp>

using namespace cv;
using namespace cudev;

__global__ void acosKernel(const PtrStepSz<uchar> src, PtrStep<float> dst)
{
    int x = blockIdx.x * blockDim.x + threadIdx.x;
    int y = blockIdx.y * blockDim.y + threadIdx.y;

    if (x < src.cols && y < src.rows)
    {
        float val = src(y, x) / 255.0f;
        dst(y, x) = ::acosf(val); // [0, π]
    }
}

int main()
{
    Mat h_src = imread("/media/dingxin/data/study/OpenCV/sources/images/Lenna.png", IMREAD_GRAYSCALE);
    if (h_src.empty()) return -1;

    cuda::GpuMat d_src, d_dst;
    d_src.upload(h_src);
    d_dst.create(h_src.size(), CV_32FC1);

    dim3 block(16, 16);
    dim3 grid((d_src.cols + block.x - 1) / block.x,
              (d_src.rows + block.y - 1) / block.y);

    acosKernel<<<grid, block>>>(d_src, d_dst);
    cudaDeviceSynchronize();

    Mat h_dst;
    d_dst.download(h_dst);

    // 归一化显示
    Mat h_display;
    normalize(h_dst, h_display, 0, 255, NORM_MINMAX, CV_8U);

    imshow("Original", h_src);
    imshow("Arccos Result", h_display);
    waitKey(0);

    return 0;
}

运行结果

相关推荐
鬼手点金几秒前
如何选择模型
java·前端·人工智能·git·深度学习
xrgs_shz几秒前
基于OGD-Net的果园环境下蟠桃生长期检测
人工智能·yolo·目标检测·计算机视觉
我叫孙一鸣-专注电子元器件4 分钟前
快反镜的镜面偏转角,为什么不等于光束偏转角?
人工智能·智能硬件·半导体·压电驱动器
古法老登瞎折腾6 分钟前
大数据智能运维实战(三):实现第一个运维 MCP 工具——查询节点与组件状态
java·大数据·运维·人工智能·spring ai·mcp
SEO_juper10 分钟前
手写 llms.txt 验证器:让 AI 更愿意引用你的网站(GEO)
开发语言·人工智能·python·聚类·seo·独立站
lucas_AI15 分钟前
AI 审查员把 PostgreSQL 19 拖延期了?committer 拆完 12 个撤回,故事没那么简单
人工智能
阡陌数智17 分钟前
Anthropic Claude Fable 5.1 长周期 Agent 原生架构解析:工具调用链路稳定性与 API 聚合平台落地实战
人工智能·语言模型·自然语言处理·架构·推荐算法
IT_陈寒17 分钟前
Vue开发实战:从入门到精通
前端·人工智能·后端
TK泰妞17 分钟前
AI 带货视频工具怎么选?电商短视频创作者的实用评估指南
人工智能·音视频
艾莉丝努力练剑26 分钟前
【AI大模型接入SDK】ChatServer接口实现
c++·人工智能·学习·ai·架构·大模型·sdk