当前位置: 首页 > news >正文

opencv 按位操作

opencv位运算说明

按位与,按位或,按位非,按位异或

在 OpenCV 中,按位操作函数的接口一般包括两个或多个图像数组(矩阵)作为输入,常常还会有一个可选的掩码参数。下面我列出每个函数的具体接口参数及其意义说明:

1. cv2.bitwise_and(按位与)

  • 功能:两个图像的对应像素按位相与。只有当两个图像的像素值都为 1 时,结果才为 1。
  • 常用于:将图像与掩码结合,提取感兴趣的区域。

 cv2.bitwise_and(src1, src2[, dst[, mask]]) -> dst

  • src1:输入图像1。必须是与 src2 尺寸相同、类型一致的数组(通常是单通道或三通道图像)。
  • src2:输入图像2。与 src1 尺寸和类型一致的数组。
  • dst(可选):输出图像,尺寸和类型与 src1src2 相同。如果省略,函数会返回新的数组。
  • mask(可选):操作掩码,尺寸和类型为单通道 8 位图像。此掩码用于限定操作的区域,掩码为 0 的位置不会被处理。

2. cv2.bitwise_or(按位或)

  • 功能:两个图像的对应像素按位相或。只要有一个像素值为 1,结果就是 1。
  • 常用于:合并两幅图像的区域。

 cv2.bitwise_or(src1, src2[, dst[, mask]]) -> dst

  • src1:输入图像1,必须与 src2 尺寸和类型一致。
  • src2:输入图像2,尺寸和类型与 src1 一致。
  • dst(可选):输出图像,尺寸和类型与输入图像一致。如果省略,函数会返回新的数组。
  • mask(可选):掩码图像,单通道 8 位图像。仅在掩码非零的地方执行操作。

3. cv2.bitwise_not(按位非)

  • 功能:对图像的每个像素取反,将 1 变为 0,0 变为 1。
  • 常用于:反转二值图像或图像的掩码。

 cv2.bitwise_not(src[, dst[, mask]]) -> dst

  • src:输入图像,可以是单通道或多通道图像。
  • dst(可选):输出图像,尺寸和类型与 src 一致。如果省略,函数会返回新的数组。
  • mask(可选):操作掩码,单通道 8 位图像。此掩码用于限定操作的区域,掩码为 0 的位置不会被处理。

4. cv2.bitwise_xor(按位异或)

  • 功能:两个图像的对应像素按位异或。只有当两个像素值不同时,结果才为 1。
  • 常用于:比较两个图像的差异。

 cv2.bitwise_xor(src1, src2[, dst[, mask]]) -> dst

  • src1:输入图像1,必须与 src2 尺寸和类型一致。
  • src2:输入图像2,尺寸和类型与 src1 一致。
  • dst(可选):输出图像,尺寸和类型与输入图像一致。如果省略,函数会返回新的数组。
  • mask(可选):掩码图像,单通道 8 位图像。仅在掩码非零的地方执行操作。

参数说明:

  • src1/src2:输入图像数组。可以是单通道(灰度图像)或三通道(彩色图像),类型通常为 8 位(如 np.uint8),尺寸必须相同。
  • dst:输出图像数组,类型与输入图像相同。此参数是可选的,如果没有提供,函数会创建并返回新的数组。
  • mask:掩码图像。它是一个单通道的二值图像(8 位图像),用于指定操作区域。仅当掩码位置为非零时,该位置的像素才会被处理。

注:可选参数在使用时必须显示赋值,除非所有可选参数都按顺序进行赋值

这些参数允许在处理图像时具有更高的灵活性,特别是掩码 mask 参数,可以控制操作只发生在图像的特定区域。

图像与自身位运算

按位与,按位或,按位非,按位异或

1. 按位与操作(bitwise_and

  • 操作result = cv2.bitwise_and(image, image)
  • 结果:图像与自身按位与的结果是 原图像本身
  • 原因:按位与的规则是只有两个像素值都为 1 时,结果才为 1。图像与自身比较时,每个像素值与自身做比较,结果就是原像素值不变。即 pixel & pixel == pixel

2. 按位或操作(bitwise_or

  • 操作result = cv2.bitwise_or(image, image)
  • 结果:图像与自身按位或的结果也是 原图像本身
  • 原因:按位或的规则是只要有一个像素值为 1,结果就为 1。由于图像每个像素值与自身做比较,因此结果仍然是原像素值不变。即 pixel | pixel == pixel

3. 按位非操作(bitwise_not

  • 操作result = cv2.bitwise_not(image)

  • 结果:图像按位非操作的结果是 反转图像

  • 原因:按位非会将图像中每个像素的位值取反。对于 8 位图像,像素值范围是 0-255,按位非会将每个像素的值变为 255 - pixel_value。例如,像素值为 0 的位置变为 255,像素值为 255 的位置变为 0。因此,按位非操作会将图像的颜色反转。

  • 示例:如果原图像是黑色(0)的地方,结果图像变成白色(255);白色(255)的地方变成黑色(0)。

4. 按位异或操作(bitwise_xor

  • 操作result = cv2.bitwise_xor(image, image)
  • 结果:图像与自身按位异或的结果是 全黑图像(所有像素值为 0)。
  • 原因:按位异或的规则是当两个像素值不同,结果为 1;当两个像素值相同时,结果为 0。由于图像的每个像素值都与自身完全相同,因此每个像素都会产生 0,结果是全黑图像。即 pixel ^ pixel == 0

结果总结:

  • cv2.bitwise_and(image, image):结果是 原图像本身
  • cv2.bitwise_or(image, image):结果是 原图像本身
  • cv2.bitwise_not(image):结果是 反转后的图像
  • cv2.bitwise_xor(image, image):结果是 全黑图像

相关文章:

opencv 按位操作

opencv位运算说明 按位与,按位或,按位非,按位异或 在 OpenCV 中,按位操作函数的接口一般包括两个或多个图像数组(矩阵)作为输入,常常还会有一个可选的掩码参数。下面我列出每个函数的具体接口…...

【Bug】STM32串口空闲中断接收不定长数据异常

Bug 使用标准库配置STM32F103C8T6的串口1开启接收中断和空闲中断,通过空闲中断来判断数据发送是否结束,收到数据后切换板载LED灯所接引脚电平,发现LED出现三种情况,熄灭、微亮、正常亮,但是LED灯所接的GPIO引脚为PC13…...

使用Radzen Blazor组件库开发的基于ABP框架炫酷UI主题

一、项目简介 使用过ABP框架的童鞋应该知道它也自带了一款免费的Blazor UI主题,它的页面是长这样的: 个人感觉不太美观,于是网上搜了很多Blazor开源组件库,发现有一款样式非常不错的组件库,名叫:Radzen&am…...

Java入门4——输入输出+实用的函数

在本篇博客,采用代码解释的方法,帮助大家熟悉Java的语法 一、输入和输出 在Java当中,我们一般有这样输入输出: import java.util.Scanner;public class javaSchool {public static void main(String[] args) {Scanner scanner …...

《当尼采哭泣》

这是一个相互救赎的故事。故事铺垫比较冗长,看到一半的时候一度看不下去。直到看到最后两章才最终感觉值得一看。很多表层现象,就像露出水面的冰山。解决表面的问题,需要深挖冰山水下的部分。一个人碰到的最难解决的问题不在外部,…...

TOMCAT Using CATALINA——OPTS,闪退解决方法(两种)

【Java实践】安装tomcat启动startup.bat出现闪退问题_安装tomcat点击startup闪退-CSDN博客...

Android音视频 MediaCodec框架-启动编码(4)

Android音视频 MediaCodec框架-启动编码 简述 上一节我们介绍了MediaCodec框架创建编码器流程,编解码的流程其实基本是一样的,只是底层的最终的实现组件不同,所以我们只看启动编码流程。 MediaCodec启动编码 从MediaCodec的start方法开始…...

# Go 语言中的 Interface 和 Struct

go package mainimport ("fmt" )// Girl 是一个接口,定义了所有"女性"类型都应该实现的方法 type Girl interface {call()introduce() }// Wife 结构体代表妻子 type wife struct {name stringage intyearsWed int }// call 方法…...

SSM与Springboot是什么关系? -----区别与联系

SSM(Spring Spring MVC MyBatis)和 Spring Boot 都是基于 Spring 框架的技术栈,但它们在使用方式、配置复杂度以及设计理念上有所不同。下面是 SSM 和 Spring Boot 之间的关系及主要区别: SSM (Spring Spring MVC MyBatis) 定…...

MATLAB小波变换图像融合系统

二、应用背景及意义 本课题利用小波变换进行图像的融合,然后对融合的结果进行图像质量的评价。所谓小波变换图像融合就是对多个的信息目标进行一系列的图像提取和合成,进而可以获得对同一个信息目标的更为精确、全面、可靠的高低频图像信息描述。并且也…...

nginx-安装和80端口映射多域名和ssl

一、安装所需插件 1、安装 gcc gcc是linux下的编译器,它可以编译 C,C,Ada,Object C和Java等语言。 yum -y install gcc 2、安装pcre、pcre-devel pcre是一个perl库,包括perl兼容的正则表达式库,nginx的http模块使用pcre来解析 正则表达式。…...

SVN小乌龟 create patch 和 apply patch 功能

在SVN(Subversion)版本控制系统中,使用“小乌龟”(TortoiseSVN)这个图形界面工具可以极大地简化SVN操作。TortoiseSVN中的“create patch”和“apply patch”是两个非常有用的功能,它们与版本控制中的补丁&…...

#MySQL `SELECT` 语句执行流程详解

在数据库操作中,MySQL 的 SELECT 语句是用于查询数据最常见的 SQL 语句之一。理解它的执行流程对数据库优化和性能提升具有至关重要的意义。本文将详细解析 SELECT 语句从发出请求到返回结果的每个步骤,并结合 MySQL 的架构为您提供深度理解。 ## 1. 连接…...

docker容器运行一段时间提示Failed to initialize NVML: Unknown Error

情况描述 服务器使用docker启动容器。启动以后一切正常也能跑程序。但是,在运行一段时间(2天左右不等),会发现gpu掉了。输入nvidia-smi提示 Failed to initialize NVML: Unknown Error 主要发生条件是,docker启动的…...

PPT自动化:快速更换PPT图片(如何保留原图片样式等参数更换图片)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 PPT更换图片 📒1. 安装 `python-pptx` 模块2. 加载PPT文件3. 查找并替换图片3.1 查找图片形状3.2 获取原图片的样式和位置3.3 替换图片4. 保存修改后的PPT文件5. 设置图片的相关参数5.1 设置透明度5.2 设置边框🚀 保留所有参…...

秒懂MVC, MVP, MVVM框架

框架的目标 关注点分离 (separation of concerns)低耦合 (Loose coupling)容易维护 (Maintainable)容易被测试 (Testable)...

IDEA社区版如何用tomcat运行war包

前言 我们在使用IDEA开发Java应用时,有时候需要运行的不是jar包,而是war包,但IDEA社区版默认是不支持tomcat容器的,无法直接运行war包。不过好在我们有一个强大的插件来支持我们使用tomcat,那么,我们应该如…...

如何使用 Git Cherry-Pick 和 Reset 处理误提交,并确保安全回滚

在开发过程中,偶尔会遇到不小心将功能开发提交到错误分支上的情况。假设我们计划在 10 月 24 号上线某些功能,但却不小心在 10 月 17 号的上线分支上进行了开发。为了解决这个问题并将误提交的内容移到正确的分支上,我们可以借助 Git 的一些功…...

Goland 搭建Gin脚手架

一、使用编辑器goland 搭建gin 打开编辑器 新建项目后 点击 create 二、获得Gin框架的代码 命令行安装 go get -u github.com/gin-gonic/gin 如果安装不上,配置一下环境 下载完成 官网git上下载 这样就下载完成了。、 不过这种方法需要设置一下GOPATH 然后再执…...

Java Spring的高级装配

1.profile与bean 1.1 profile 如果我们在配置类中装配一个bean,但是这个bean与环境相关怎么办? 比如有一个类,它在开发环境采取一种模式,但是到了生产环境,有需要使用另一种环境。 当然,你可能会说&…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性&#xf…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

企业如何增强终端安全?

在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...