一、函数简介
1、add—图像矩阵相加
函数原型:cv2.add(src1, src2, dst=None, mask=None, dtype=None)
src1:图像矩阵1
src1:图像矩阵2
dst:默认选项
mask:默认选项
dtype:默认选项
2、subtract—图像矩阵相减
函数原型:cv2.subtract(src1, src2, dst=None, mask=None, dtype=None)
src1:图像矩阵1
src1:图像矩阵2
dst:默认选项
mask:默认选项
dtype:默认选项
3、bitwise_and—图像与运算
函数原型:cv2.bitwise_and(src1, src2, dst=None, mask=None)
src1:图像矩阵1
src1:图像矩阵2
dst:默认选项
mask:默认选项
4、bitwise_or—图像或运算
函数原型:cv2.bitwise_or(src1, src2, dst=None, mask=None)
src1:图像矩阵1
src1:图像矩阵2
dst:默认选项
mask:默认选项
5、bitwise_xor—图像异或运算
函数原型:bitwise_xor(src1, src2, dst=None, mask=None)
src1:图像矩阵1
src1:图像矩阵2
dst:默认选项
mask:默认选项
6、bitwise_not—图像非运算
函数原型:bitwise_not(src1, src2, dst=None, mask=None)
src1:图像矩阵1
src1:图像矩阵2
dst:默认选项
mask:默认选项
二、实例演练
1、原图像每个像素都加100,大于255的按255处理
代码如下:
#encoding:utf-8
#
#图像运算
#
import cv2
import numpy as np
image = 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、原图像每个像素都减去50,小于0的按0处理
代码如下:
#encoding:utf-8
#
#图像运算
#
import cv2
import numpy as np
image = 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、矩形与圆形的交运算
代码如下:
#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、图像相交后的结果
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、图像或后的结果
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、图像异或相交后的结果
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)
转自:https://blog.csdn.net/jnulzl/article/details/47129887