Python3+OpenCV(二):图像的代数运算



(1)图像加法

cv2.add(src1, src2, dst=None, mask=None, dtype=None)
作用:将两个图片进行加和,大于255的使用255计数

src1 + src2
使用numpy中的矩阵加法来实现,相加的结果%256

cv2.addWeighted(src1, alpha, src2, beta, gamma)
作用:两张相同分辨率、相同文件类型的图片融合,可以设置图片的透明度
alpha为src1的透明度,beta为src2的透明度,gamma调节亮度参数

import cv2
import matplotlib.pyplot as plt

# 图像加法
p1 = cv2.imread("D:/Study/digital image processing/test/Lena.bmp")
p2 = cv2.imread("D:/Study/digital image processing/test/Goldhill.bmp")
res1 = cv2.add(p1,p2)
res1_1 = p1 + p2
# 图像融合
res2 = cv2.addWeighted(p1,0.3,p2,0.7,0)

cv2.imshow("p1",p1)
cv2.imshow("p2",p2)
cv2.imshow("res1",res1)
cv2.imshow("res1_1",res1_1)
cv2.imshow("res2",res2)

cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述
res1是cv2.add(p1,p2)产生的图像
res1_1是p1 + p2产生的图像
res2是p1、p2按照(0.3, 0.7)比例混合产生的图像
在这里插入图片描述

(2)图像减法

cv2.subtract(src1, src2, dst=None, mask=None, dtype=None)
作用:得出src1与src2两幅图片之间的差异图像,两幅图像见对像素的灰度值或彩色分量相减,用于目标检测
像素值<0,直接自动按照0处理

cv2.absdiff(src1,src2,[dst])
作用:得出src1与src2两幅图之间的差异图像,与cv2.subtract()的区别是,cv2.absdiff()计算两幅图的差的绝对值

p1 = cv2.imread("D:/Study/digital image processing/test/Lena_star.bmp")
p2 = cv2.imread("D:/Study/digital image processing/test/LenaRGB.bmp")
cv2.imshow("p1",p1)
cv2.imshow("p2",p2)
# p1与p2的差值
res1_1 = cv2.subtract(p1,p2)
# p2与p1的差值
res1_2 = cv2.subtract(p2,p1)
# p1与p2的差的绝对值(|p1-p2|=|p2-p1|)
res1_3 = cv2.absdiff(p1,p2)
cv2.imshow("res1_1",res1_1)
cv2.imshow("res1_2",res1_2)
cv2.imshow("res1_3",res1_3)
# 
res2 = cv2.addWeighted(p1,1,p2,-1,0)
cv2.imshow("res2",res2)

cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述
res1_1是p1与p2的差值产生的图像
res1_2是p2与p1的差值产生的图像
在这里插入图片描述
res1_1是p1与p2的差的绝对值产生的图像
res2是p1和p2按照(1, -1)混合产生的图像
在这里插入图片描述

(3)图像乘法和除法

cv2.multiply(src1, src2, dst=None, scale=None, dtype=None)
作用:将两幅图像对应的灰度值或彩色分量进行相乘
像素值>255,直接自动按照255处理
cv2.divide(src1, src2, dst=None, scale=None, dtype=None)
作用:将两幅图像对应的灰度值或彩色分量进行相除

p1 = cv2.imread("D:/Study/digital image processing/test/rec1.bmp")
p2 = cv2.imread("D:/Study/digital image processing/test/rec2.bmp")
res = cv2.multiply(p1,p2)
cv2.imshow("p1",p1)
cv2.imshow("p2",p2)
cv2.imshow("res",res)

cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值