热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

openCV图像算数与逻辑运算

一、函数简介1、add—图像矩阵相加函数原型:add(src1,src2,dstNone,maskNone,dtypeNone)src1:图像矩阵1sr

一、函数简介

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
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

结果如下: 
1、原图像 
)
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
  • 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
  • 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
  • 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
  • 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
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

结果如下: 
1、圆形 
这里写图片描述 
2、圆形取非后的结果 
这里写图片描述


推荐阅读
author-avatar
cheer57_275
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有