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

算法描述

OpenCV CUDA 模块(cudev) 中的一个仿函数(functor)生成器,用于创建一个反向二值化阈值处理函数对象。
这个函数返回一个 仿函数对象(functor),用于在 GPU 上执行反向二值化阈值处理(Threshold Binary Inverted),即:
如果像素值小于等于 thresh,则设为 maxVal;否则设为 0。

函数原型


template<typename T >
__host__ __device__ ThreshBinaryInvFunc<T> cv::cudev::thresh_binary_inv_func 	( 	T  	thresh,T  	maxVal ) 		

参数

  • T thresh 阈值,如果像素值小于等于该值则保留最大值
  • T maxVal 像素满足条件时设置的最大值

代码


#include <opencv2/cudev.hpp>
#include <opencv2/cudaimgproc.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>// CUDA kernel 使用 functor 对图像进行反向二值化
template <typename T>
__global__ void thresholdInvKernel(const T* input, T* output, int numPixels,cv::cudev::ThreshBinaryInvFunc<T> func) {int idx = blockIdx.x * blockDim.x + threadIdx.x;if (idx < numPixels) {output[idx] = func(input[idx]);}
}int main() {// Step 1: 读取图像并转为灰度图cv::Mat bgr = cv::imread("/media/dingxin/data/study/OpenCV/sources/images/Lenna.png", cv::IMREAD_COLOR);if (bgr.empty()) {std::cerr << "Failed to load image!" << std::endl;return -1;}cv::Mat src;cv::cvtColor(bgr, src, cv::COLOR_BGR2GRAY); // 灰度图int width = src.cols;int height = src.rows;int numPixels = width * height;// Step 2: 分配 GPU 内存uchar* d_input, *d_output;cudaMalloc(&d_input, numPixels * sizeof(uchar));cudaMalloc(&d_output, numPixels * sizeof(uchar));cudaMemcpy(d_input, src.data, numPixels * sizeof(uchar), cudaMemcpyHostToDevice);// Step 3: 创建反向二值化函数对象auto func = cv::cudev::thresh_binary_inv_func<uchar>(128, 255);// Step 4: 启动 kernelint blockSize = 256;int numBlocks = (numPixels + blockSize - 1) / blockSize;thresholdInvKernel<<<numBlocks, blockSize>>>(d_input, d_output, numPixels, func);// Step 5: 下载结果cv::Mat result(height, width, CV_8U);cudaMemcpy(result.data, d_output, numPixels * sizeof(uchar), cudaMemcpyDeviceToHost);// Step 6: 显示结果cv::imshow("Binary Inv Threshold Result", result);cv::waitKey(0);cv::imwrite("binary_inv_result.jpg", result);// Step 7: 清理资源cudaFree(d_input);cudaFree(d_output);return 0;
}

运行结果

在这里插入图片描述

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

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

相关文章

【实现一个时间MCP完整技术解析】

&#x1f552; MCP Time Server 完整技术解析&#xff1a;从核心实现到文件架构的深度剖析 目前已上传npm库&#xff0c;chan-mcp-time-server&#xff0c;有兴趣的可以下载试试 创建时间: 2025年7月2日 &#x1f3af; 项目概述与架构设计 核心问题定义 AI助手在处理时间相关…

类成员方法命名风格解析:动宾、纯动词与纯名词的选择之道

在软件开发的浩瀚代码海洋中&#xff0c;类成员方法的命名犹如指引开发者的灯塔&#xff0c;其重要性不言而喻。合理的命名不仅能让代码 “自我言说”&#xff0c;降低理解成本&#xff0c;还能提升开发效率&#xff0c;促进团队协作。常见的类成员方法命名风格可归纳为动宾结构…

自己电脑搭建本地服务器并实现公网访问,内网也能提供互联网连接使用

如何在本地自己计算机上自建服务器并开启公网地址提供互联网服务的详细教学&#xff0c;一步步操作流程&#xff0c;从本地部署到配置公网IP&#xff0c;最后并附无公网IP内网穿透公网访问的nat123方案。 要在自用的电脑上搭建本地服务器并实现公网地址的访问&#xff0c;需要…

如何使用AI改进论文写作 ---- 引言篇(2)

写在前面 本篇作为1.0版本的补充优化&#xff0c;记录本人的研究过程。 在分析了多本论文写作的相关的书籍之后&#xff0c;我明白了一点&#xff0c;关于论文写作&#xff0c;永远是一个熟能生巧的过程&#xff0c;对于人来说&#xff0c;必须多写才能够变得熟练&#xff0c;对…

【Java21】在spring boot中使用ScopedValue

文章目录 0.环境说明1.基础知识1.1 ScopedValue的特点 2.应用场景2.1 spring web项目中&#xff0c;使用ScopedValue传递上下文&#xff08;全局不可变量&#xff09;2.2 spring grpc项目中&#xff0c;使用ScopedValue传递上下文&#xff08;全局不可变量&#xff09; 3.Scope…

第10篇 图像语义分割和目标检测介绍

语义分割(Semantic Segmentation)是图像处理和机器视觉一个重要分支&#xff0c;其目标是精确理解图像场景与内容。语义分割是在像素级别上的分类&#xff0c;属于同一类的像素都要被归为一类&#xff0c;因此语义分割是从像素级别来理解图像的。如下如所示的照片&#xff0c;属…

微算法科技(NASDAQ MLGO)基于量子图像处理的边缘检测算法:开拓图像分析新视野

在当今数字化时代&#xff0c;图像数据海量增长&#xff0c;边缘检测作为图像处理的关键环节&#xff0c;在机器视觉、医学成像、安防监控等众多领域有着至关重要的作用。传统边缘检测算法在处理复杂图像时&#xff0c;面临计算效率低、精度不足等问题。量子计算的兴起&#xf…

SM4密码算法的C语言实现(带测试)

一、SM4算法原理 SM4是中国国家密码管理局于2012年发布的国家商用密码算法标准&#xff0c;也称为GB/T 32907-2016。它是一种分组对称加密算法&#xff0c;采用32轮非线性迭代结构&#xff0c;分组长度和密钥长度均为128位。SM4算法的设计充分考虑了安全性、高效性和实现简便性…

【React Native原生项目不能运行npx react-native run-android项目】

运行命令报错,帮我修复X:\jetbrains-workspace\theme-wallpaper>npx react-native run-android error Android project not found. Are you sure this is a React Native project? If your Android files are located in a non-standard location (e.g. not inside ‘andro…

SPLADE 在稀疏向量搜索中的原理与应用详解

今天看到Sentence Transformers v5.0 集成了许多稀疏嵌入模型。为了搞清楚什么稀疏嵌入模型以及应用&#xff0c;查到了SPLADE&#xff0c;比较巧合的是在paper reading分享的时候看到有同学分享了一片ACL 2025的工作也是基于SPLADE去做的。下面结合一些资料分享关于SPLADE 在稀…

wpf的Binding之UpdateSourceTrigger

前言 在wpf界面开发中&#xff0c;Binding的源和目标之间可以通过Mode来决定数据的传递方向&#xff0c;同时数据传递时的触发条件也是可以有多种情况&#xff0c;多种情况由UpdateSourceTrigger属性来控制&#xff0c;该属性有Default、Explicit、LostFocus、PropertyChanged…

突破性进展:超短等离子体脉冲实现单电子量子干涉,为飞行量子比特奠定基础

关键词&#xff1a;量子计算、电子干涉测量、等离子体脉冲、马赫-曾德尔干涉仪、非绝热量子操控 研究背景 在量子计算领域&#xff0c;飞行量子比特&#xff08;flying qubits&#xff09;因其动态传播特性和通过库仑相互作用直接纠缠的能力&#xff0c;成为替代光子量子比特的…

Java调用百度地图天气查询服务获取当前和未来天气-以贵州省榕江县为例

目录 前言 一、百度天气查询服务 1、天气查询服务 2、查询API简介 二、UniHttp集成天气查询服务 1、定义访问接口 2、业务集成调用 三、天气检索成果 1、IDE检索结果输出 2、互联网天气对比 四、总结 前言 天气与人们的生活息息相关&#xff0c;无论是日常出行、农业…

Windows Excel文档办公工作数据整理小工具

在现代办公环境中&#xff0c;Excel 是处理数据不可或缺的工具&#xff0c;而 “Excel 工作圈小工具” 则如同为 Excel 量软件下载地址安装包 身打造的超级增效器&#xff0c;它是一个集合了大量 Excel 功能的绿色工具软件&#xff0c;能够显著提升你的工作效率。 这款软件虽然…

Node.js v22.5+ 官方 SQLite 模块全解析:从入门到实战

在 Node.js v22.5.0 及更高版本中&#xff0c;node:sqlite 模块作为内置模块被引入&#xff0c;为开发者提供了与 SQLite 数据库交互的官方支持。以下是关于 node:sqlite 模块的详细介绍&#xff1a; 一、模块启用与导入 启用方式&#xff1a;node:sqlite 模块目前处于活跃开…

API接口安全-2:签名、时间戳与Token如何联手抵御攻击

在API接口通信中&#xff0c;数据传输的安全性至关重要。无论是前端与后端的交互&#xff0c;还是企业间的接口对接&#xff0c;一旦缺乏有效的安全校验&#xff0c;攻击者可能通过抓包篡改参数&#xff08;如修改订单金额&#xff09;、重放攻击&#xff08;重复提交支付请求&…

Pull Request记录与Git commit签名

Pull Request记录 好久没有pull request了&#xff0c;浅浅记录一下流程 &#xff1a;Fork 原项目&#xff08;如果你没有写权限&#xff09;&#xff1a;打开原项目主页&#xff08;例如&#xff1a;github.com/your-professor/research-topic&#xff09;&#xff0c;点击右…

如何在C++交易系统中集成高性能回测与模拟撮合

DolphinDB 的高性能行情回放与模拟撮合引擎插件&#xff0c;为量化交易者提供了低延迟、高吞吐量的策略验证解决方案。对于已构建 C 回测框架的机构而言&#xff0c;直接在现有系统中集成撮合引擎&#xff0c;既能复用既有基础设施&#xff0c;又能获得 DolphinDB 的极速计算优…

【Laravel】 Laravel 智能验证规则生成器

Laravel 智能验证规则生成器:企业级增强方案 <?phpnamespace App\Services\Validation;use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Validator; use Illuminate\Support\Str; use Illuminate\Validation\…

讲基于优化的 IMU 与视觉信息融合

目录 视觉 SLAM 里的 Bundle Adjustment 问题 最小二乘基础概念 迭代下降法求解:下降法 最速下降法和牛顿法 阻尼法 非线性最小二乘 Gauss-Newton 和 LM 鲁棒核函数的实现 VIO 残差函数的构建 视觉重投影误差 IMU 测量值积分 状态误差线性递推公式的推导 基于误差随时间变化的…