1.两个图像相加
import cv2
import numpy as np
img1 = cv2.imread('C:\\Users\\Mengyang\\Desktop\\123.png') #加载图片
#图的加法运算就是矩阵的运算
#因此进行加法运算的两张图片的大小要相同
print(img1.shape) #打印图片大小信息
img2 = np.ones((800,1200,3),np.uint8)*50 #每个像素全为1,乘以100
result = cv2.add(img1,img2) #两个图像相加
cv2.imshow('result',result)
cv2.imshow('orig',img1)
cv2.waitKey(0)
2.两个图像相减
所用API subtract(A,B)
含义是A-B
相加相减运算,可以使图片变亮或变暗
result = cv2.add(img1,img2) #两个图像相加,使图片变亮
img3 = cv2.subtract(result,img2) #两个图像相减,使图片变暗
3.图像乘与图像除
乘 multiply(A,B) 使加的更快
除 divide(A,B) 减的更快
4.图像的溶合
addWeighted(A,alpha,B,bate,gamma)
只有图像大小和通道数一样时才能进行融合
A:加法运算的图像A
B:加法运算的图像B
alpha和bate是A和B在溶合后的分别权重,也就是占比
gamma 静态权重,最后生成的图片所有元素加上gamma
import cv2
import numpy as np
img1 = cv2.imread('C:\\Users\\Mengyang\\Desktop\\111.png')
img2 = cv2.imread('C:\\Users\\Mengyang\\Desktop\\112.png')
print(img1.shape) #只有图像大小和通道数一样时才能进行融合
print(img2.shape)
result = cv2.addWeighted(img1,0.2,img2,0.8,0)
cv2.imshow('result',result)
cv2.waitKey(0)
运行结果:
5.图像的位运算
5.1 与运算
bitwise_and(img1,img2)
import cv2
from cv2 import bitwise_not
from cv2 import bitwise_and
import numpy as np
#创建一张图片
img = np.zeros((200,200),np.uint8)
img1 = np.zeros((200,200),np.uint8)
img[20:120,20:120] = 255
img1[80:180,80:180] = 255
cv2.imshow('img',img)
cv2.imshow('img1',img1)
#new_img = bitwise_not(img) #图像非运算
new_img = bitwise_and(img,img1)
cv2.imshow('new_img',new_img)
cv2.waitKey(0)
运算结果:
5.2 或运算
bitwise_or(img1,img2)
new_img = cv2.bitwise_or(img,img1) #图像或运算
运行结果:
5.3 非运算
bitwise_not(img)
import cv2
from cv2 import bitwise_not
import numpy as np
#创建一张图片
img = np.zeros((200,200),np.uint8)
img[50:150,50:150] = 255
cv2.imshow('img',img)
new_img = bitwise_not(img) #图像非运算
cv2.imshow('new_img',new_img)
cv2.waitKey(0)
运行结果:
5.4 异或运算
bitwise_xor(img1,img2)
import cv2
import numpy as np
#创建一张图片
img = np.zeros((200,200),np.uint8)
img1 = np.zeros((200,200),np.uint8)
img[20:120,20:120] = 255
img1[80:180,80:180] = 255
cv2.imshow('img',img)
cv2.imshow('img1',img1)
#new_img = bitwise_not(img) #图像非运算
#new_img = cv2.bitwise_and(img,img1) #图像与运算
#new_img = cv2.bitwise_or(img,img1) #图像或运算
new_img = cv2.bitwise_xor(img,img1) #图像异或运算
cv2.imshow('new_img',new_img)
cv2.waitKey(0)