OpenCV中图像的运算

两个图像相加:cv2.add(A,B)

加运算会使图片更亮

# 图像加法的API通过add(A,B)
img2 = cv2.add(cat1, img)

两个图像相减:cv2.subtract(A,B)

减运算会使图片更暗

# 图像减法的API通过subtract(A,B),含义就是A-B
img3 = cv2.subtract(cat1, img)

图像的乘与除:

乘 cv2.multiply(A,B)

除  cv2.divide(A,B)

乘除只是让图片亮(暗)的更快。

import cv2
import numpy as np


cat = cv2.imread('d:\\download\\3.jpg')
cat1 = cv2.resize(cat, (500, 400), fx=1, fy=1)
'''
# 图的加法运算就是矩阵的加法运算
因此,加法运算的两张图必须是相等的
'''
print(cat1.shape)
img = np.ones((400, 500, 3), np.uint8)*50
# 图像加法的API通过add(A,B)
img2 = cv2.add(cat1, img)
# 图像减法的API通过subtract(A,B),含义就是A-B
img3 = cv2.subtract(cat1, img)
# 图像的乘
img4 = cv2.multiply(cat1, img2)

res1 = np.hstack([img2, cat1])
res2 = np.hstack([img3, cat1])
res3 = np.hstack([img4, cat1])
cv2.imshow('res1', res1)
cv2.imshow('res2', res2)
cv2.imshow('res3', res3)
key = cv2.waitKey(0)
if key & 0xFF == ord('q'):
    cv2.destroyAllWindows()

运行结果为:

 图像的融合cv2.addWeighted(A,alpha,B,bate,gamma)

这里的融合时,也需要两张图片的尺寸相同

alpha(A融合后A在图片中占的权重)

bate(B融合后B在图片中的权重)

gamma(静态权重,也就是说如果最后有此值,最后生成的图片的所有元素都要加上这个值)

import cv2
import numpy as np


cat = cv2.imread('d:\\download\\3.jpg')
B1 = cv2.imread('d:\\download\\2.jpg')
cat1 = cv2.resize(cat, (500, 400))
cat = cv2.resize(cat, (600, 500))
B1 = cv2.resize(B1, (600, 500))
'''
# 图的加法运算就是矩阵的加法运算
因此,加法减法运算的两张图必须是相等的,融合时两张图的属性也必须是相同的
'''
print(cat.shape)
print(cat1.shape)
print(B1.shape)
img = np.ones((400, 500, 3), np.uint8)*50
# 图像加法的API通过add(A,B)
img2 = cv2.add(cat1, img)
# 图像减法的API通过subtract(A,B),含义就是A-B
img3 = cv2.subtract(cat1, img)
# 图像的乘
img4 = cv2.multiply(cat1, img2)
# 图像的除
img5 = cv2. divide(cat1, img2)
# 图像的融合
img6 = cv2.addWeighted(cat, 0.6, B1, 0.4, 0)

res1 = np.hstack([img2, cat1])
res2 = np.hstack([img3, cat1])
res3 = np.hstack([img4, cat1])
res4 = np.hstack([img5, cat1])
res5 = np.hstack([img6, cat])
cv2.imshow('res1', res1)
cv2.imshow('res2', res2)
cv2.imshow('res3', res3)
cv2.imshow('res4', res4)
cv2.imshow('res5', res5)
key = cv2.waitKey(0)
if key & 0xFF == ord('q'):
    cv2.destroyAllWindows()

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值