当前位置: 首页 > 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与环境相关怎么办? 比如有一个类,它在开发环境采取一种模式,但是到了生产环境,有需要使用另一种环境。 当然,你可能会说&…...

分布式光伏发电系统电气一次部分设计(开题报告2)

毕业论文(设计)开题报告 题目 分布式光伏发电系统电气一次部分设计 题目类别 毕业设计 姓名 专业 班级 学号 一、选题背景及依据(简述国内外研究状况和相关领域中已有的研究成果(文献综述),选题目的、意义,列出主要参考文献) (一)选题背景与依据 选题背景与依据: …...

【设计模式-迪米特法则】

迪米特法则(Law of Demeter,LoD),也称为最少知识原则(Principle of Least Knowledge),是一种面向对象编程中的设计原则。它的核心思想是:一个对象应当尽可能少地了解其他对象&#x…...

Webpack安装

全局安装 npm install -g webpack webpack-cli安装后查看版本号: webpack -v初始化项目 npm init -yJS打包 webpack目录下创建配置文件webpack.config.js 以下配置的意思是:读取当前项目目录下src文件夹中的main.js(入口文件&#xff09…...

前端开发学习(一)VUE框架概述

一、MVC模式与MVVM模式 1.1mvc模式 MVC模式是移动端应用广泛的软件架构之一,MVC模式将应用程序划分为3部分:Model(数据模型)、View(用户界面视图)和Controller(控制器)。MVC模式的执行过程是将View层展示给用户,也就是通过 HTML页面接受用户动作&#…...

Linux操作系统的背景、发展历程及对比分析

1. UNIX发展历史 unix_百度百科 UNIX操作系统作为现代操作系统的奠基石,其发展历史可以追溯到20世纪60年代末。1969年,贝尔实验室的Ken Thompson、Dennis Ritchie以及他们的同事们为了实现一种多任务的、可移植的、简洁而高效的操作系统,开发…...

gaussdb 基础管理 数据库 表 用户 模式 权限 存储过程

数据库database #创建数据库,指定字符集UTF8,缺省情况下新数据库将通过复制标准系统数据库template0来创建,且仅支持使用template0来创建。 CREATE DATABASE devdb ENCODING UTF8 template template0; CREATE DATABASE testdb; 标识符的命名…...

i9-11900H+3070laptop+win10下的yolov5配置

参考博客:https://blog.csdn.net/qq_67105081/article/details/138232424 关键问题: 1、由之前装的CUDA11.6(有篇博客上可以换版本)CUDNN8.4.0Python3.9.13推后在指定的虚拟环境中装了Pytorch1.12.1(在AnnacondaPrompt下用pip命令…...

SpringBoot日常:封装redission starter组件

文章目录 逻辑实现POM.xmlRedissionConfigRedissionPropertiesRedissionUtilsspring.factories 功能测试application.yml配置POM.xmlTestController运行测试 本章内容主要介绍如何通过封装相关的redission连接配置和工具类,最终完成一个通用的redission starter。并…...

腾讯云技术深度解析:构建高效云原生应用与数据安全管理

腾讯云技术深度解析:构建高效云原生应用与数据安全管理 在当今快速发展的技术环境中,云计算已经成为企业数字化转型的关键驱动力。腾讯云作为中国领先的云服务提供商,凭借其卓越的技术和创新能力,为企业提供了高效、可扩展的云原…...

ACM与蓝桥杯竞赛指南 基本输入输出格式二

A B || 继续看第二个AB问题,A B || ,大家可以先自行读题,或者有经验直接看输入输出格式,发现依然是求AB,但它的输入数据为: 2 1 5 10 20 输出: 6 20 此题相比第一道而言,本…...