如何使用OpenCV作图像或矩阵的逻辑运算

news2024/11/28 8:50:37

所谓逻辑运算,主要是指逻辑与运算、逻辑或运算、逻辑非运算、逻辑异或运算。
可用函数bitwise_and()实现图像或矩阵的逻辑与运算;
可用函数bitwise_or()实现图像或矩阵的逻辑或运算;
可用函数bitwise_not()实现图像或矩阵的逻辑非运算;
可用函数bitwise_xor()实现图像或矩阵的逻辑异或运算。

这四个函数的使用非常简单,大家看一下下面的示例代码就会用了。

值得注意的是,逻辑运算是在二进制的情况下进行的,所以大家首先要把参与运算的数转换成二进制数。

为了方便大家,以下代码中数字的二进制分别如下:
01→0000 0001
88→0101 1000

66→0100 0010
02→0000 0010

55→0011 0111

C++示例代码如下:

//出处:昊虹AI笔记网(hhai.cc)
//用心记录计算机视觉和AI技术

//OpenCV版本 OpenCV3.0

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;
using namespace cv;


int main()
{

	cv::Mat A1 = (cv::Mat_<uchar>(3, 3) << 1, 1, 1,
		66, 66, 66,
		55, 55, 55);
	cout << "A1中的数据为:\n" << A1 << endl << endl;


	cv::Mat B1 = (cv::Mat_<uchar>(3, 3) << 88, 88, 88,
		2, 2, 2,
		55, 55, 55);
	cout << "B1中的数据为:\n" << B1 << endl << endl;


	cv::Mat C1, C2, C3, C4;
	bitwise_and(A1, B1, C1);
	bitwise_or(A1, B1, C2);
	bitwise_not(A1, C3);
	bitwise_xor(A1, B1, C4);

	cout << "C1中的数据为:\n" << C1 << endl << endl;
	cout << "C2中的数据为:\n" << C2 << endl << endl;
	cout << "C3中的数据为:\n" << C3 << endl << endl;
	cout << "C4中的数据为:\n" << C4 << endl << endl;

	return(0);
}

运行结果如下:
在这里插入图片描述
Python代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 出处:昊虹AI笔记网(hhai.cc)
# 用心记录计算机视觉和AI技术
# OpenCV的版本为4.4.0

import numpy as np
import cv2 as cv

if __name__ == '__main__':
    A1 = np.array([[1, 1, 1],
                  [66, 66, 66],
                  [55, 55, 55]], dtype='uint8')

    B1 = np.array([[88, 88, 88],
                  [2, 2, 2],
                  [55, 55, 55]], dtype='uint8')

    C1 = cv.bitwise_and(A1, B1)
    C2 = cv.bitwise_or(A1, B1)
    C3 = cv.bitwise_not(A1)
    C4 = cv.bitwise_xor(A1, B1)
    

运行结果如下:
在这里插入图片描述

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

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

相关文章

oh-my-zsh 为 ls 命令自定义颜色

ls 命令默认显示的颜色是&#xff1a; 白色&#xff1a; 表示普通文件 蓝色&#xff1a; 表示目录 绿色&#xff1a; 表示可执行文件 红色&#xff1a; 表示压缩文件 蓝绿色&#xff1a; 链接文件 红色闪烁&#xff1a;表示链接的文件有问题 黄色&#xff1a; 表示设备文件 灰…

Java实现3DES加密解密(DESede/ECB/PKCS5Padding使用)

一、简介 3DES&#xff08;又叫Triple DES&#xff09;是三重数据加密算法&#xff08;TDEA&#xff0c;Triple Data Encryption Algorithm&#xff09;块密码的通称。 它相当于是对每个数据块应用三次DES加密算法。密钥长度是128位&#xff0c;192位(bit)&#xff0c;如果密…

如何最简洁的使用iOS 开发证书 和 Profile 文件

如果你想在 iOS 设备&#xff08;iPhone/iPad/iTouch&#xff09;上调试&#xff0c; 需要有 iOS 开发证书和 Profile 文件。 在你拿到这两个文件之后&#xff0c;该如何使用呢&#xff1f; 证书使用说明&#xff1a; 1. iOS 开发证书&#xff1a;开发证书 &#xff08;Devel…

ROS——构建一个模拟的两轮ROS机器人

构建一个模拟的两轮ROS机器人1. 确保已经安装了Rviz2. 生成并构建ROS功能包2.1 生成一个catkin工作空间2.2 漏了一个懒得改2.3 构建差分驱动的机器人的URDF2.3.1 创建机器人底座2.3.2 使用roslaunch2.3.3 添加轮子2.3.4 添加颜色2.3.5 添加小脚轮2.3.6 添加碰撞属性2.3.7 移动轮…

CHS寻址

盘片&#xff08;platter&#xff09; 、磁头&#xff08;head&#xff09;、 磁道&#xff08;track&#xff09;、 扇区&#xff08;sector&#xff09;、 柱面&#xff08;cylinder&#xff09;。 CHS&#xff1a;通过柱面&#xff08;cylinder&#xff09;、磁头&#xff0…

成都易佰特的坑——E103-W06

写这篇博客&#xff0c;是为了记录&#xff0c;为了防止技术同行踩坑。 因为什么原因&#xff0c;就不说了。反正就是买了这个E103-W06模块来进行测试wifi透传的性能. 结果&#xff0c;好家伙&#xff0c;买回来就不能用。TMD虚拟串口都识别不了。还他妈卖的挺贵。95元~99元一…

【附源码】计算机毕业设计JAVA装修网站

【附源码】计算机毕业设计JAVA装修网站 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; JAVA mybatis M…

2分能出线,6分却不能出线?世界杯小组赛的出线规则这次真被我整明白了

写在前面 这个月世界杯正是进行得火热&#xff0c;我这样的十几年的老球迷自然是场场不落&#xff0c;周边不少不看球的朋友甚至连我那一场比赛上多少人都弄不明白的老婆也能说上几句&#xff1a;“听说梅西输了&#xff1f;”&#xff0c;“听说德国队要回家了”&#xff0c;“…

mybatis实战:一、mybatis入门

出自《MyBatis从入门到精通》刘增辉&#xff0c;精简 1.pom.xml 1.设置源码编码方式为 UTF -8 2.设置编译源代码的 JDK 版本 3.添加mybatis依赖 4.还需要添加会用到的 Log4j JUnit ySql 驱动的依赖。 <?xml version"1.0" encoding"UTF-8"?> <pr…

基于BM1684X 架构实现 Faiss 的两个查询接口

文章目录Faiss 简介距离度量在 Sophon TPU 上的接口实现Sophon TPUindexflat 实现indexPQ 实现 Faiss 简介 Faiss 库是 Facebook 开发的一个用于稠密向量相似性搜索和聚类的库&#xff0c;该库包含有诸多向量相似性搜索的算法。向量相似性搜索是将一个向量与底库中的向量集合…

[附源码]计算机毕业设计springboot教务管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

2022科大讯飞A.I.开发者大赛 柑橘花果梢识别挑战赛冠军方案

2022科大讯飞A.I.开发者大赛 柑橘花果梢识别挑战赛冠军方案PPT

游戏道具平台|基于Springboot+Vue实现游戏道具平台系统

作者主页&#xff1a;编程指南针 作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容&#xff1a;Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助 收藏点赞不迷路 关注作者有好处 文末获取源…

Vagrant 搭建虚拟机环境

用 Vagrant 和 VirtualBox 来快速搭建一个开发环境是非常方便的。简单整理一下 Vagrant 搭建 VirtualBox 虚拟机的记录。 首先安装 Vagrant 和 VirtualBox&#xff0c;这一步就直接省略了。自行安装即可。 什么是 Vagrant&#xff0c;我们这里引用 OSChina 上的一段话来进行解释…

浏览器IndexedDB模块损坏及解决办法

浏览器IndexedDB模块损坏及解决办法 表现 提示错误码&#xff1a; UnknownError Internal error opening backing store for indexedDB.open. indexedDB无法展开。 复现方式 进入以下路径 Mac C:\用户\xxx\AppData\Local\Google\Chrome\User Data\Default\IndexedDB Windo…

吴恩达2022机器学习——第二部分高级学习算法第三周笔记

目录1.1决定下一步做什么&#xff08;构建机器学习的实用建议&#xff09;1.2模型评估1.3模型选择&交叉验证测试集的训练方法模型选择总结举例2.1通过偏差与方法进行诊断2.2正则化、偏差、方差1.1决定下一步做什么&#xff08;构建机器学习的实用建议&#xff09; 从一个例…

C++运算符重载【加号、左移、递增、指针、赋值、中括号、关系、函数调用】,统统载了

学习目标 在c对象的学习中&#xff0c;我们会使用到运算符重载&#xff0c;接下来大家一起学习一下吧&#xff01; 学习内容 运算符重载&#xff1a; operator overloading运算符重载是一种形式的C多态 即对已有运算符进行重新定义&#xff0c;赋予新的功能&#xff0c;使其…

我的创作纪念日

机缘 成为创作者的初心&#xff1a; 让大家目光向我看齐&#xff0c;来我这CV&#xff08;狗头&#xff09; 收获 在创作的过程中都有哪些收获 获得了28粉的关注获得了252赞、83评论、233474阅读量、548收藏 &#xff08;还好我自己点了几个赞&#xff0c;不然250赞显得我好…

安洵杯-复现

reee 主要就是这个函数 void __noreturn sub_401640() {char Buffer[52]; // [esp0h] [ebp-60h] BYREFchar ArgList[16]; // [esp34h] [ebp-2Ch] BYREFint v2; // [esp44h] [ebp-1Ch]CHAR Text[13]; // [esp48h] [ebp-18h] BYREFint v4; // [esp55h] [ebp-Bh]__int16 v5; // [e…

《Redis实战篇》一、短信登录

1.1、导入黑马点评项目 1.1.1 、导入SQL 1.1.2、有关当前模型 手机或者app端发起请求&#xff0c;请求我们的nginx服务器&#xff0c;nginx基于七层模型走的事HTTP协议&#xff0c;可以实现基于Lua直接绕开tomcat访问redis&#xff0c;也可以作为静态资源服务器&#xff0c;轻…