【OpenCV 例程200篇】20. 图像的按位运算(cv2.bitwise)
专栏地址:『youcans 的 OpenCV 例程 200 篇』
文章目录:『youcans 的 OpenCV 例程200篇 - 总目录』
【youcans 的 OpenCV 例程200篇】20. 图像的按位运算
函数 cv2.bitwise 提供了图像的位运算,对图像的像素点值按位操作,快速高效、方便灵活。
函数说明:
cv.bitwise_and(src1, src2[, dst[, mask]] → dst # 位操作: 与
cv.bitwise_or(src1, src2[, dst[, mask]] → dst # 位操作: 或
cv.bitwise_xor(src1, src2[, dst[, mask]] → dst # 位操作: 与或
cv.bitwise_not(src1, src2[, dst[, mask]] → dst # 位操作: 非(取反)
位运算包括四种方法:按位与、按位或、按位非、按位异或,其计算方法是对图像的像素点值的按位运算,运算效率高、速度快。
以按位与操作 “bitwise_and” 为例:
- 对图像中的每一像素(矩阵中的每一元素),将数值转换为二进制;
- 对 src1 和 src2 同一位置像素的数值进行按位操作 (按位与): 1&1=1, 1&0=0, 0&0=0;
- 将位操作的二进制结果转换为十进制。
- 类似地,按位或、按位非、按位异或操作,先将像素值转换为二进制,进行位操作后再将结果转换回十进制。
参数说明:
- scr1, scr2:进行位运算的图像,ndarray 多维数组
- mask:掩模图像,8位灰度格式,与 scr1 大小相同,可选参数
- 返回值:dst,位运算结果图像,ndarray 多维数组
注意事项:
- 进行位运算的图像 scr1, scr2 的大小和类型(通道数)必须相同。
- 使用掩模图像时,掩模图像中的黑色区域(数值为 0),输出也为黑色(数值为 0);掩模图像中的非黑色区域(非 0 值),按位操作输出。
基本例程:1.29 图像的位操作
# 1.29 图像的位操作img1 = cv2.imread("../images/imgLena.tif") # 读取彩色图像(BGR)img2 = cv2.imread("../images/imgB2.jpg") # 读取彩色图像(BGR)imgAnd = cv2.bitwise_and(img1, img2) # 按位 与(AND)imgOr = cv2.bitwise_or(img1, img2) # 按位 或(OR)imgNot = cv2.bitwise_not(img1) # 按位 非(NOT)imgXor = cv2.bitwise_xor(img1, img2) # 按位 异或(XOR)plt.figure(figsize=(9,6))titleList = ["img1", "img2", "and", "or", "not", "xor"]imageList = [img1, img2, imgAnd, imgOr, imgNot, imgXor]for i in range(6):plt.subplot(2,3,i+1), plt.title(titleList[i]), plt.axis('off')plt.imshow(cv2.cvtColor(imageList[i], cv2.COLOR_BGR2RGB), 'gray')plt.show()
例程说明 1.29:
本例程运行结果如下图所示。
图中给出了两张图像进行位运算的结果,看起来有些莫名其妙,很难理解位操作究竟有什么意义。确实如此,其实位操作基本上不会用于两张普通图像的操作,通常是用于图像的掩模操作,可以看下一个例程 1.30。
(本节完)
版权声明:
youcans@xupt 原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/125112487)
Copyright 2022 youcans, XUPT
Crated:2021-11-18
【第2章:图像的数值运算】
20. 图像的按位运算
21. 图像的叠加
22. 图像添加非中文文字
23. 图像添加中文文字
【OpenCV 例程200篇】20. 图像的按位运算(cv2.bitwise)相关推荐
- 【OpenCV 例程200篇】20. 图像的按位运算
[OpenCV 例程200篇]20. 图像的按位运算 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 函数 cv2.b ...
- 【youcans 的 OpenCV 例程 200 篇】112. 滤波反投影重建图像
欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列,持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列,持续更新中 [youcans 的 OpenCV 例程 2 ...
- 【youcans 的 OpenCV 例程 200 篇】111. 雷登变换反投影重建图像
欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列,持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列,持续更新中 [youcans 的 OpenCV 例程 2 ...
- 【youcans 的 OpenCV 例程 200 篇】107. 退化图像的维纳滤波
欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列,持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列,持续更新中 [youcans 的 OpenCV 例程 2 ...
- 【OpenCV 例程200篇】80. 频率域图像滤波详细步骤
[OpenCV 例程200篇]80. 频率域图像滤波详细步骤 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 3. 频 ...
- 【OpenCV 例程200篇】79. 频率域图像滤波的基本步骤
[OpenCV 例程200篇]79. 频率域图像滤波的基本步骤 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 3. ...
- 【OpenCV 例程200篇】78. 频率域图像滤波基础
[OpenCV 例程200篇]78. 频率域图像滤波基础 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 3. 频率域 ...
- 【OpenCV 例程200篇】76. OpenCV 实现图像傅里叶变换
[OpenCV 例程200篇]76. OpenCV 实现图像傅里叶变换 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 ...
- 【OpenCV 例程200篇】75. Numpy 实现图像傅里叶变换
[OpenCV 例程200篇]75. Numpy 实现图像傅里叶变换 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 ...
最新文章
- EntityFramework Core解决并发详解
- 趣学python3(41)--利用交集计算词类标签的分类
- 记一次简单的sql优化
- JUnit与EasyMock合作
- 【思考】一次交付项目小结
- Aptana Studio 3 如何汉化,实现简体中文版
- 反射(3)反射应用:一个插件项目
- Pytorch实现语义分割指标
- 如何从IP源地址角度,预防DDoS攻击?
- pg(高斯)(postgreSQL)数据库修改字段长度
- 小红书编辑器_为什么我建议你用小红书打造个人IP?
- excel文件修复工具_用EXCEL自己制作批量修改文件名的实用工具
- 可视化实验四:大数据可视化工具—ECharts(二)
- 反转链表-迭代反转法
- matlab所有元素求和,数组 – MATLAB对数组值表达式的所有元素求和
- 服务器HBA品牌、驱动和固件版本核查
- stm32h7能跑linux,STM32H7榨干了Cortex-M7的最后一滴血
- python通过榛子云短信平台发送短信验证码
- 疯狂模渲大师链接永久是最新版|怎么安装客户端并激活素材库联系作者加载自营专属素材扩展包高效使用超一流辅助插件脚本工具的步骤教程?...
- 3dsmax 2019 插件开发要点
热门文章
- 普通最小二乘法回归 - OLS (ordinary least square)
- echart 折线图设置y轴单位_Echarts自定义Y轴
- 《老司机,带带我》之考驾照
- css3 transition属性造成文字抖动
- 在C#中使用WIA获取扫描仪数据
- Flutter 添加页面渲染完毕回调
- android隐藏虚拟按键的几种方式
- 【Pygame实战】俄罗斯方块 | 太好玩了~停不下来,这种版本(Turtle彩版)你肯定没玩过……(经典怀旧:无人不知的俄罗斯方块)
- GNU和LINUX到底怎么个发音?
- android 测试机 知乎,appium 自动化测试之知乎Android客户端