opencv 按位操作
opencv位运算说明
按位与,按位或,按位非,按位异或
在 OpenCV 中,按位操作函数的接口一般包括两个或多个图像数组(矩阵)作为输入,常常还会有一个可选的掩码参数。下面我列出每个函数的具体接口参数及其意义说明:
1. cv2.bitwise_and(按位与)
- 功能:两个图像的对应像素按位相与。只有当两个图像的像素值都为 1 时,结果才为 1。
- 常用于:将图像与掩码结合,提取感兴趣的区域。
cv2.bitwise_and(src1, src2[, dst[, mask]]) -> dst
src1:输入图像1。必须是与src2尺寸相同、类型一致的数组(通常是单通道或三通道图像)。src2:输入图像2。与src1尺寸和类型一致的数组。dst(可选):输出图像,尺寸和类型与src1和src2相同。如果省略,函数会返回新的数组。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与环境相关怎么办? 比如有一个类,它在开发环境采取一种模式,但是到了生产环境,有需要使用另一种环境。 当然,你可能会说&…...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...
