openCV—Python(6)—— 图像算数与逻辑运算

一、函数简介

1、add—图像矩阵相加

函数原型:add(src1, src2, dst=None, mask=None, dtype=None)

src1:图像矩阵1

src1:图像矩阵2

dst:默认选项

mask:默认选项

dtype:默认选项

2、subtract—图像矩阵相加

函数原型:subtract(src1, src2, dst=None, mask=None, dtype=None)

src1:图像矩阵1

src1:图像矩阵2

dst:默认选项

mask:默认选项

dtype:默认选项

3、bitwise_and—图像与运算

函数原型:bitwise_and(src1, src2, dst=None, mask=None)

src1:图像矩阵1

src1:图像矩阵2

dst:默认选项

mask:默认选项

4、bitwise_or—图像或运算

函数原型:bitwise_and(src1, src2, dst=None, mask=None)

src1:图像矩阵1

src1:图像矩阵2

dst:默认选项

mask:默认选项

5、bitwise_xor—图像异或运算

函数原型:bitwise_and(src1, src2, dst=None, mask=None)

src1:图像矩阵1

src1:图像矩阵2

dst:默认选项

mask:默认选项

6、bitwise_not—图像非运算

函数原型:bitwise_and(src1, src2, dst=None, mask=None)

src1:图像矩阵1

src1:图像矩阵2

dst:默认选项

mask:默认选项

二、实例演练

1、原图像每个像素都加100,大于255的按255处理

代码如下:

#encoding:utf-8#
#图像运算
#import cv2
import numpy as npimage = cv2.imread("H:\\img\\lena.jpg")
cv2.imshow("Original",image)
cv2.waitKey(0)
#图像image各像素加100
M = np.ones(image.shape,dtype="uint8")*100#与image大小一样的全100矩阵
added = cv2.add(image,M)#将图像image与M相加
cv2.imshow("Added",added)
cv2.waitKey(0)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

结果如下: 
1、原图像 
 
2、相加后的结果 

2、原图像每个像素都减去50,小于0的按0处理

代码如下:

#encoding:utf-8#
#图像运算
#import cv2
import numpy as npimage = cv2.imread("H:\\img\\lena.jpg")
cv2.imshow("Original",image)
cv2.waitKey(0)
#图像image各像素减去50
M = np.ones(image.shape,dtype="uint8")*50#与image大小一样的全50矩阵
subtracted = cv2.subtract(image,M)#将图像image与M相减
cv2.imshow("Subtracted", subtracted)
cv2.waitKey(0)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

结果如下: 
1、原图像 
 
2、相减后的结果 

3、矩形与圆形的交运算

代码如下:

#encoding:utf-8#
#图像的逻辑运算
#import numpy as np
import cv2#画矩形
Rectangle = np.zeros((300,300),dtype="uint8")
cv2.rectangle(Rectangle,(25,25),(275,275),255,-1)
cv2.imshow("Rectangle",Rectangle)
cv2.waitKey(0)#画圆形
Circle = np.zeros((300,300),dtype="uint8")
cv2.circle(Circle,(150,150),150,255,-1)
cv2.imshow("Circle",![这里写图片描述](http://img.blog.csdn.net/20150729200613202)Circle)
cv2.waitKey(0)#图像的交
bitwiseAnd = cv2.bitwise_and(Rectangle,Circle)
cv2.imshow("AND",bitwiseAnd)
cv2.waitKey(0)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

结果如下: 
1、矩形与圆形 
 
 
2、图像相交后的结果 

4、矩形与圆形的或运算

代码如下:

#encoding:utf-8#
#图像的逻辑运算
#import numpy as np
import cv2#画矩形
Rectangle = np.zeros((300,300),dtype="uint8")
cv2.rectangle(Rectangle,(25,25),(275,275),255,-1)
cv2.imshow("Rectangle",Rectangle)
cv2.waitKey(0)#画圆形
Circle = np.zeros((300,300),dtype="uint8")
cv2.circle(Circle,(150,150),150,255,-1)
cv2.imshow("Circle",Circle)
cv2.waitKey(0)#图像的或
bitwiseOr = cv2.bitwise_or(Rectangle,Circle)
cv2.imshow("OR",bitwiseOr)
cv2.waitKey(0)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

结果如下: 
1、矩形与圆形 
 
 
2、图像或后的结果 

5、矩形与圆形的异或运算

代码如下:

#encoding:utf-8#
#图像的逻辑运算
#import numpy as np
import cv2#画矩形
Rectangle = np.zeros((300,300),dtype="uint8")
cv2.rectangle(Rectangle,(25,25),(275,275),255,-1)
cv2.imshow("Rectangle",Rectangle)
cv2.waitKey(0)#画圆形
Circle = np.zeros((300,300),dtype="uint8")
cv2.circle(Circle,(150,150),150,255,-1)
cv2.imshow("Circle",Circle)
cv2.waitKey(0)#图像的异或
bitwiseXor = cv2.bitwise_xor(Rectangle,Circle)
cv2.imshow("XOR",bitwiseXor)
cv2.waitKey(0)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

结果如下: 
1、矩形与圆形 
 
 
2、图像相交后的结果 

6、圆形的非运算

代码如下:

#encoding:utf-8#
#图像的逻辑运算
#import numpy as np
import cv2#画圆形
Circle = np.zeros((300,300),dtype="uint8")
cv2.circle(Circle,(150,150),150,255,-1)
cv2.imshow("Circle",Circle)
cv2.waitKey(0)#圆形的非运算
bitwiseNot = cv2.bitwise_not(Circle)
cv2.imshow("NOT",bitwiseNot)
cv2.waitKey(0)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

结果如下: 
1、圆形 
 
2、圆形取非后的结果 

openCV—Python(6)—— 图像算数与逻辑运算相关推荐

  1. Python 计算机视觉(四)—— OpenCV进行图像算数与逻辑运算

    目录 1. 图像加法运算 (1)随机生成灰度图像 (2)读取原始图像 (3)两图像相加 (4)图像像素点加常数 2. 图像减法运算 (1)减小亮度 (2)还原添加灰度图像的图像 3. 图像与运算 4. ...

  2. OpenCV python 提取图像内的三色

    OpenCV python 提取图像内的三色 原图 [opencv.jpg] import cv2 import numpy as npdef main():# 1.导入图片img_src = cv2 ...

  3. python opencv 图像切割_【OpenCV+Python】图像的基本操作与算术运算

    图像的基本操作 在上个教程中,我们介绍了使用鼠标画笔的功能.本次教程,我们将要谈及OpenCV图像处理的基本操作. 本次教程的所有操作基本上都和Numpy相关,而不是与OpenCV相关.要使用Open ...

  4. OpenCV—Python PyLibTiff_psd 图像基本操作以及图像格式转换

    文章目录 一.图片 读.写.显示.属性查看 libtiff 包装器 Python 模块 opencv 模块 PIL 模块 直接修改图片格式 大(分辨率大)图片缩小 与上面代码同效 二.PSD图像读取与 ...

  5. opencv+python实现图像的增强与合成(人像迁移)

    代码链接:图像的增强与合成 最近做了一个小实验,内容是图像的增强与合成,觉着挺有意思,记录一下. 首先效果是这样的: 利用Python和Opencv算法,实现下述功能: 1. 准备本人在纯色背景前的照 ...

  6. OpenCV+python:图像梯度

    1,图像梯度的概念 梯度简单来说就是求导,在图像上表现出来的就是提取图像的边缘(无论是横向的.纵向的.斜方向的等等),所需要的是一个核模板.模板的不同结果也不同.所以能够看到,全部的这些个算子函数,归 ...

  7. OpenCV+python:图像金字塔

    1,图像金字塔的概念 图像金字塔是一种以多分辨率来解释图像的有效但概念简单的结构.应用于图像分割,机器视觉和图像压缩.一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图 ...

  8. OpenCV+python:图像二值化

    1,图像二值化概念及方法 一个像素点的颜色是由RGB三个值来表现的,所以一个像素点矩阵对应三个颜色向量矩阵,分别是R矩阵,G矩阵,B矩阵,它们也都是同样大小的矩阵. 在图像处理中,用RGB三个分量(R ...

  9. python的image读取的图片是什么类型的-opencv python 读取图像/显示图像/保存图像...

    以前也用过opencv, 不过都是按需使用, 掌握的知识很零散, 这次希望能够系统学习opencv-python 本文直接从Gui Features开始. 1 读取图片 使用cv2.imread()函 ...

最新文章

  1. 解决ifconfig命令未找到
  2. C++学习笔记-----用位运算实现加减乘除
  3. 一个比较方便的转换NSString为UTF8编码的函数
  4. 手机照片丢失或误删如何恢复
  5. python处理字符串数组慢_Python字符串处理 - str/bytes
  6. Python3条件判断
  7. java 交互式 shell_Java9 Shell工具(JShell)
  8. Atitit 发帖机实现(2)---usrQBN2243 文本解析到对象协议规范
  9. 聊一聊我在 B 站上自学编程的经历吧!
  10. 解放双手,CSDN博客支持公众号自动同步!
  11. 数资问题【抽屉问题】
  12. led灯条串联图_LED灯如何串联?
  13. 计算机专用计算器,功率计算器
  14. iBox-面向Flutter的一站式研发工作台
  15. 论文精读(1)-- Lipschitz constrained parameter initialization for deep transformers
  16. WAP(wml)开发问答
  17. 湖北5G继续加码!今年投资64亿元,新建5G基站5万个
  18. Ceph剖析:Leader选举
  19. 折纸 瓦力机器人_一张纸成千种形态机器人:折纸机器人,神奇的创造
  20. 计算机桌面显示器,屏幕分辨率

热门文章

  1. 将两个数组河滨_两名3岁男孩在河滨公园玩耍迷了路 幸亏被好心人“捡”到
  2. android java 时间测试方法_一个让你开挂的Android 性能测试方法
  3. feign_与Feign客户轻松进行REST通信
  4. 三星r381android+wear,三星新路线图:Android Wear手表/Tizen手机
  5. redux异步action_Redux数据状态管理
  6. 渲染测试软件 d15,D5 Render(D5 渲染器)1.7.0 正式版发布 | 一款 RTX 实时光线追踪可视化实时渲染引擎,而且是国产软件!...
  7. 仍然报错_详解oracle经典报错:ORA-04030排错思路和解决方法
  8. iOS 15.2计划上线“数字遗产”!网友:管的真远,身后事都替我操心?
  9. 遇到Request header is too large,你们是如何解决的?
  10. 阿里云AI发女朋友啦!