图像算术运算——相加相减与或异或非

Posted leoych

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像算术运算——相加相减与或异或非相关的知识,希望对你有一定的参考价值。

一、函数简介

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处理

#原始图像每个像素都加100, 大于255的按255处理
import cv2
import numpy as np

img = cv2.imread("test.png")
cv2.imshow("Original", img)
cv2.waitKey(0)

#图像img各像素加100
M = np.ones(img.shape, dtype=uint8)*100#与img大小一样的全100矩阵
added = cv2.add(img, M)#将图像image与M相加
cv2.imshow("Added", added)
cv2.waitKey(0)

效果如下图所示:

 

 

技术图片

 

原图:

技术图片

 

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

#原图像每个像素都减去50, 小于0的按0处理
import cv2
import numpy as np

image = cv2.imread(test.png)
cv2.imshow("Orignal", image)
cv2.waitKey(0)
#图像image各像素减去50
M = np.ones(image.shape, dtype="uint8")*50
subtracted = cv2.subtract(image, M)
cv2.imshow("Subtracted", subtracted)
cv2.waitKey(0)

效果如图所示:

技术图片

3、矩形与圆形的交运算 

#矩形与圆形的交运算
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)

#图像的交
bitwiseAnd = cv2.bitwise_and(Rectangle, Circle)
cv2.imshow("AND", bitwiseAnd)
cv2.waitKey(0)

效果如下所示:

技术图片

技术图片

技术图片

 

4、矩形与圆形的或运算 

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)

效果如图所示:

技术图片

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

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)

效果如图所示:

技术图片

6、圆形的非运算

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)

效果如图所示:

技术图片

以上是关于图像算术运算——相加相减与或异或非的主要内容,如果未能解决你的问题,请参考以下文章

Java_位运算(移位位与或异或非)

Java 位运算(移位位与或异或非)与逻辑运算

移位位与或异或非

算法二进制 与或异或运算

与或异或运算

与或异或