图像处理——基于opencv和python(四)

1 图像的加法运算

OpenCV函数cv.add() 或仅通过numpy操作res = img1 + img2 添加两个图像。

两个 图像应具有相同的深度和类型,或者第二个图像可以只是一个标量值 注意 OpenCV加法和Numpy加法之间有区别。

OpenCV加法是饱和运算,而Numpy加法是模运 算。

1.1 图像相加 add()

2个图像对象img,img2如果通道数一样、大小一样,可以使用cv2.add(img,img2)相加,得到一个新的图像。

import cv2
import numpy as np
from PIL import Image
img1 = cv2.imread('./images/lena.jpg')
img2 = cv2.imread('./images/opencv_logo.png')
dst = img1+img2


img1 = cv2.imread('./images/lena.jpg')[:512,:512]
img2 = cv2.imread('./images/opencv_logo.png')[:512,:512]
#dst = img1+img2
dst = cv2.add(img2,img1)
img_rgb = dst[:, :, ::-1]
Image.fromarray(img_rgb)

9733f6b382f345119261bf7502815ca2.png


img1 = cv2.imread('./images/yifei.jpg')[:267,:189]
img2 = cv2.imread('./images/opencv_logo.png')[:267,:189]
#dst = img1+img2
dst = cv2.add(img2,img1)
img_rgb = dst[:, :, ::-1]
Image.fromarray(img_rgb)

 2e3885a01ae947f2b0a7e52e3bc9e580.png

2个图像中白色部分会覆盖了原来的位置,那是因为add()方法相加的图像如果超过了阈值会被截断。 在OpenCV中图像的算术运算遵循“饱和运算”的规则,如果计算的结果超过了阈值范围,则就近进行截断,比如unit8类型的数据范围是【0,255】,如果2个数值 直接相加的结果大于255就会赋值为255。

1.2 图像相加 运算符+


img1 = cv2.imread('./images/lena.jpg')[:512,:512]
img2 = cv2.imread('./images/opencv_logo.png')[:512,:512]
dst = img1+img2
img_rgb = dst[:, :, ::-1]
Image.fromarray(img_rgb)

   acfae035cd204bd4b3230aba302fb7dc.png     从运行结果看,+运算符将2个图像相加,新图像和lena.jpg差异不大,但是和opencv-logo.png相差甚远。 从像素[111,222]的运算结果看,当2个值相加大于255时,会将这个值对256求余得到新的像素值。

1.3 加权加法 addWeighted()

addWighted()可以用来实现2幅图像的不同权值的加法,实现图像混合的效果。

函数cv2.addWeighted()可以按下面的公式对图片进行混合操作。

$g(x)=(1-a)f_0(x)+af_1(x)+b$

现在我们把两幅图混合在一起。第一幅图的权重是0.7,第二幅图的权重是0.3, b=0。                        


img2_dst = cv2.resize(img2,(img1.shape[0],img1.shape[1])) #放大图像
dst = cv2.addWeighted(img1, 0.7, img2_dst, 0.3, 0) # 第一幅图的权重是 0.7 第二幅图的权重是 0.3
img_rgb = dst[:, :, ::-1]
Image.fromarray(img_rgb)

f8714b119658494cb419b400db5fe772.png

 

 

 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值