OpenCV CUDA模块中逐元素操作------逻辑运算

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

算法描述

比较、AND、OR、NOT等。这类操作可用于创建基于条件的掩码,这对于图像分割或特征选择非常有用。

主要函数

1. 按位与 (cv::cuda::bitwise_and)

功能: 对两个矩阵执行逐元素按位与操作。

函数原型
void cv::cuda::bitwise_and
(InputArray src1,        // 第一个输入矩阵或标量InputArray src2,        // 第二个输入矩阵或标量OutputArray dst,       // 输出矩阵const GpuMat& mask = GpuMat(), // 可选掩码矩阵Stream& stream = Stream::Null() // 可选CUDA流
);
参数介绍:
  • src1: 输入的第一个矩阵或标量。
  • src2: 输入的第二个矩阵或标量。
  • dst: 输出的结果矩阵。
  • mask: 可选的掩码矩阵,用于指定哪些像素参与计算,默认为空(不使用掩码)。
  • stream: CUDA流对象,用于控制操作的异步执行,默认为同步执行。

2. 按位或 (cv::cuda::bitwise_or)

功能: 对两个矩阵执行逐元素按位或操作。

函数原型
void cv::cuda::bitwise_or
(InputArray src1,InputArray src2,OutputArray dst,const GpuMat& mask = GpuMat(),Stream& stream = Stream::Null()
);
参数
  • src1: 输入的第一个矩阵或标量。
  • src2: 输入的第二个矩阵或标量。
  • dst: 输出的结果矩阵。
  • mask: 可选的掩码矩阵,用于指定哪些像素参与计算,默认为空(不使用掩码)。
  • stream: CUDA流对象,用于控制操作的异步执行,默认为同步执行。

3. 按位非 (cv::cuda::bitwise_not)

功能: 对单个矩阵执行逐元素按位非操作。

函数原型
void cv::cuda::bitwise_not
(InputArray src,        // 输入矩阵OutputArray dst,       // 输出矩阵const GpuMat& mask = GpuMat(), // 可选掩码矩阵Stream& stream = Stream::Null() // 可选CUDA流
);
参数介绍
  • src: 输入的矩阵。
  • dst: 输出的结果矩阵。
  • mask: 可选的掩码矩阵,用于指定哪些像素参与计算,默认为空(不使用掩码)。
  • stream: CUDA流对象,用于控制操作的异步执行,默认为同步执行。

4. 按位异或 (cv::cuda::bitwise_xor)

功能: 对两个矩阵执行逐元素按位异或操作。

函数原型

void cv::cuda::bitwise_xor
(InputArray src1,InputArray src2,OutputArray dst,const GpuMat& mask = GpuMat(),Stream& stream = Stream::Null()
);
参数介绍
  • src1: 输入的第一个矩阵或标量。
  • src2: 输入的第二个矩阵或标量。
  • dst: 输出的结果矩阵。
  • mask: 可选的掩码矩阵,用于指定哪些像素参与计算,默认为空(不使用掩码)。
  • stream: CUDA流对象,用于控制操作的异步执行,默认为同步执行。

示例代码

以下是一个综合示例,展示了如何使用这些逻辑运算函数,并包含了所有参数的使用:


#include <opencv2/cudaarithm.hpp>  // 包含CUDA算术和逻辑运算头文件
#include <opencv2/opencv.hpp>int main()
{// 创建两个输入矩阵cv::Mat h_src1 = ( cv::Mat_< uchar >( 3, 3 ) << 1, 0, 1, 0, 1, 0, 1, 0, 1 );  // 第一个输入矩阵cv::Mat h_src2 = ( cv::Mat_< uchar >( 3, 3 ) << 0, 1, 0, 1, 0, 1, 0, 1, 0 );  // 第二个输入矩阵// 将它们上传到GPUcv::cuda::GpuMat d_src1, d_src2;d_src1.upload( h_src1 );d_src2.upload( h_src2 );// 定义输出矩阵cv::cuda::GpuMat d_dst;// 按位与操作cv::cuda::bitwise_and( d_src1, d_src2, d_dst );cv::Mat h_bitwise_and;d_dst.download( h_bitwise_and );std::cout << "Result (Bitwise AND):\n" << h_bitwise_and << std::endl;// 按位或操作cv::cuda::bitwise_or( d_src1, d_src2, d_dst );cv::Mat h_bitwise_or;d_dst.download( h_bitwise_or );std::cout << "Result (Bitwise OR):\n" << h_bitwise_or << std::endl;// 按位非操作cv::cuda::bitwise_not( d_src1, d_dst );cv::Mat h_bitwise_not;d_dst.download( h_bitwise_not );std::cout << "Result (Bitwise NOT on src1):\n" << h_bitwise_not << std::endl;// 按位异或操作cv::cuda::bitwise_xor( d_src1, d_src2, d_dst );cv::Mat h_bitwise_xor;d_dst.download( h_bitwise_xor );std::cout << "Result (Bitwise XOR):\n" << h_bitwise_xor << std::endl;return 0;
}

运行结果

Result (Bitwise AND):
[  0,   0,   0;0,   0,   0;0,   0,   0]
Result (Bitwise OR):
[  1,   1,   1;1,   1,   1;1,   1,   1]
Result (Bitwise NOT on src1):
[254, 255, 254;255, 254, 255;254, 255, 254]
Result (Bitwise XOR):
[  1,   1,   1;1,   1,   1;1,   1,   1]

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

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

相关文章

一台入网的电脑有6要素, 机器名,mac,ip,俺码,网关,dns,分别有什么作用

一台入网的电脑需要配置的 六大网络要素&#xff08;机器名、MAC地址、IP地址、子网掩码、网关、DNS&#xff09;各自承担不同的关键作用&#xff0c;共同确保设备能正确通信和访问网络资源。以下是它们的详细功能解析&#xff1a; 1. 机器名&#xff08;主机名&#xff09; 作…

MySQL之储存引擎和视图

一、储存引擎 基本介绍&#xff1a; 1、MySQL的表类型由储存引擎(Storage Engines)决定&#xff0c;主要包括MyISAM、innoDB、Memory等。 2、MySQL数据表主要支持六种类型&#xff0c;分别是&#xff1a;CSV、Memory、ARCHIVE、MRG_MYISAN、MYISAM、InnoBDB。 3、这六种又分…

【Spring Boot后端组件】mybatis-plus使用

文章目录 mybatis-plus使用一、依赖引入二、添加相关配置项三、功能详解1.自增主键2.逻辑删除3.操作时间自动填充4.其他字段自动填充5.分页查询6.自定义动态查询7.代码生成器8.代码生成器(自定义模板) mybatis-plus使用 一、依赖引入 pom.xml文件 <?xml version"1.…

docker compose 启动指定的 service

使用 Docker Compose 启动指定服务 要在 Docker Compose 中启动特定的服务而不是所有服务&#xff0c;可以使用以下命令&#xff1a; docker compose up [服务名] 基本用法 启动单个服务&#xff1a; docker compose up service_name 启动多个指定服务&#xff1a; docker …

wordcount程序

### 在 IntelliJ IDEA 中编写和运行 Spark WordCount 程序 要使用 IntelliJ IDEA 编写并运行 Spark 的 WordCount 程序&#xff0c;需按照以下流程逐步完成环境配置、代码编写以及任务提交。 --- #### 1. **安装与配置 IntelliJ IDEA** 确保已正确安装 IntelliJ IDEA&#x…

SmartETL函数式组件的设计与应用

SmartETL框架主要采用了面向对象的设计思想&#xff0c;将ETL过程中的处理逻辑抽象为Loader和Processor&#xff08;对应loader模块和iterator模块&#xff09;&#xff0c;所有流程组件需要继承或实现DataProvider&#xff08;iter方法&#xff09;或JsonIterator&#xff08;…

鸿蒙AI开发:10-多模态大模型与原子化服务的集成

鸿蒙AI开发&#xff1a;10-多模态大模型与原子化服务的集成 在鸿蒙生态中&#xff0c;多模态大模型与原子化服务的集成是一个重要课题。本文将介绍如何在鸿蒙平台上进行多模态大模型与原子化服务的集成&#xff0c;以及相关的技术细节和实际案例。 鸿蒙AI开发概述 什么是鸿蒙AI…

python打卡day29@浙大疏锦行

知识点回顾 类的装饰器装饰器思想的进一步理解&#xff1a;外部修改、动态类方法的定义&#xff1a;内部定义和外部定义 作业&#xff1a;复习类和函数的知识点&#xff0c;写下自己过去29天的学习心得&#xff0c;如对函数和类的理解&#xff0c;对python这门工具的理解等&…

20250516使用TF卡将NanoPi NEO core开发板出厂的Ubuntu core22.04.3系统降级到Ubuntu core16.04.2

20250516使用TF卡将NanoPi NEO core开发板出厂的Ubuntu core22.04.3系统降级到Ubuntu core16.04.2 2025/5/16 10:58 缘起&#xff1a;NanoPi NEO core核心板出厂预制的OS操作系统为Ubuntu core22.04.3系统。 【虽然是友善之臂提供的最新的系统&#xff0c;但是缺少很多用用程序…

密西根大学新作——LightEMMA:自动驾驶中轻量级端到端多模态模型

导读 目前将自动驾驶与视觉语言模型&#xff08;VLMs&#xff09;结合的研究越来越火热&#xff0c;VLMs已经证明了其对自动驾驶的重要作用。本文引入了一种用于自动驾驶的轻量级端到端多模态模型LightEMMA&#xff0c;它能够集成和评估当前的商业和开源模型&#xff0c;以研究…

框架之下再看HTTP请求对接后端method

在当今的软件开发领域&#xff0c;各类框架涌现&#xff0c;极大地提升了开发效率。以 Java 开发为例&#xff0c;Spring 框架不断演进&#xff0c;Spring Boot 更是简化到只需引入 Maven 包&#xff0c;添加诸如SpringBootApplication、RestController等注解&#xff0c;就能轻…

Vue+Go 自定义打字素材的打字网站

Typing_Key_Board 这是一个基于Vue 3和Go语言的自定义素材打字练习网站&#xff0c;灵感来源于常用字打字练习&#xff0c;解决了大多数网站无法自定义打字素材的问题。在 Typing_Key_Board (简称TKB)中&#xff0c;用户可以自定义打字素材进行练习&#xff0c;在复习代码的同…

开源物联网平台(OpenRemote)

在物联网技术蓬勃发展的当下&#xff0c;OpenRemote作为一款强大的开源物联网平台&#xff0c;正逐渐在多个领域崭露头角。尤其是在智能能源管理领域&#xff0c;它为微电网和分布式能源网络提供了全面且灵活的数据集成与管理方案&#xff0c;展现出独特的优势。 OpenRemote提供…

Spring Security与SaToken的对比与优缺点分析

Spring Security与SaToken对比分析 一、框架定位 Spring Security 企业级安全解决方案&#xff0c;深度集成Spring生态提供完整的安全控制链&#xff08;认证、授权、会话管理、攻击防护&#xff09;适合中大型分布式系统 SaToken 轻量级权限认证框架&#xff0c;专注Token会…

每日一道leetcode(新学数据结构版)

208. 实现 Trie (前缀树) - 力扣&#xff08;LeetCode&#xff09; 题目 Trie&#xff08;发音类似 "try"&#xff09;或者说 前缀树 是一种树形数据结构&#xff0c;用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景&#xff0c;例如自动…

【自然语言处理与大模型】大模型(LLM)基础知识④

&#xff08;1&#xff09;微调主要用来干什么&#xff1f; 微调目前最主要用在定制模型的自我认知和改变模型对话风格。模型能力的适配与强化只是辅助。 定制模型的自我认知&#xff1a;通过微调可以调整模型对自我身份、角色功能的重新认知&#xff0c;使其回答更加符合自定义…

基于 Spring Boot 瑞吉外卖系统开发(十五)

基于 Spring Boot 瑞吉外卖系统开发&#xff08;十五&#xff09; 前台用户登录 在登录页面输入验证码&#xff0c;单击“登录”按钮&#xff0c;页面会携带输入的手机号和验证码向“/user/login”发起请求。 定义UserMapper接口 Mapper public interface UserMapper exte…

什么是TCP协议?它存在哪些安全挑战?

一、TCP协议概述 TCP&#xff08;传输控制协议&#xff09;是互联网中面向连接、可靠的传输层协议&#xff0c;主要负责在不可靠的IP层上实现数据的可靠传输。其核心特点包括&#xff1a; 面向连接&#xff1a;通信前需通过三次握手&#xff08;SYN-SYN/ACK-ACK&#xff09;建…

12条热门照片提示

12条热门照片提示 1. 赛博朋克光彩 (Cyberpunk Glow-Up) 未在文件中显示2. 卡通化我 (Cartoonify Me) Convert this image of [your subject here] into a 3D Pixar-style cartoon clean lines, soft lighting, expressive features, and a polished render that feels cine…

Java求职面试揭秘:从Spring到微服务的技术挑战

文章简述 在这篇文章中&#xff0c;我们将通过一个幽默的面试场景&#xff0c;揭秘互联网大厂Java求职者在面试中面对的技术挑战。面试官将从Spring框架、微服务架构到大数据处理等多个维度进行提问&#xff0c;并详细讲解这些技术点的应用场景和解决方案&#xff0c;帮助小白…