图像运算(一)【OpenCV&Python】

本文介绍了图像处理中的加法运算,包括使用加法运算符和cv2.add()函数,详细阐述了两种方法的规则及适用场景。同时,探讨了图像加权和的概念,通过cv2.addWeighted()函数实现图像的加权混合,并给出了实际应用示例。
摘要由CSDN通过智能技术生成


本章主要介绍了加法运算、位运算,并使用它们实现了位平面分解、图像异或加密、数字水印、脸部打码/解码等实例。

1、加法运算

在图像处理过程中,经常需要对图像进行加法运算。实现加法运算主要有两种方式,一种通过**加法运算符“+”,另一种是通过cv2.add()函数**对图像进行加法运算。

1.1 加号运行算符

使用加号运算符时,遵循以下规则:
a + b = a + b , a + b ≤ 255 a+b= a+b,a+b≤255 a+b=a+ba+b255

a + b = m o d ( a + b , 256 ) , a + b ≤ 255 a+b= mod(a+b,256),a+b≤255 a+b=mod(a+b256),a+b255
式中,mod是取模运算,表示计算“a+b的和除以256取余数”

1.2 cv2.add()函数

使用函数时会得到像素值对应图像的饱和值,其语法格式为:
计算结果= cv2.add(像素值a,像素值b)
遵循以下规则:
a + b = a + b , a + b ≤ 255 a+b= a+b,a+b≤255 a+b=a+ba+b255

a + b = 255 , a + b ≤ 255 a+b= 255,a+b≤255 a+b=255a+b255
需要注意的是,函数cv2.add()中的参数可能有如下三种形式:
形式1:计算结果=cv2.add(图像1,图像2),两个参数都是图像,则图像的大小、类型必须**保持一致
形式2:计算结果=cv2.add(数值,图像),第一个参数是数值,第二个参数是图像,此时将超过图像饱和值的数值处理为
饱和值(最大值)
形式3:计算结果=cv2.add(图像,数值),第一个参数是图像,第二个参数是数值,此时将超过图像饱和度的数值处理为
饱和值(最大值)**。

2、图像加权和cv2.addWeighted()

所谓图像加权和,就是在计算两幅图像的像素值之和时,将每幅图像的权重考虑进来,可以用公式表示为:
dst=saturate(src1a+scr2b+c)
式中,saturate表示取饱和值(最大值)。
函数cv2.addWeighted(),用来实现图像的加权和(混合、融合),该函数的语法格式为:

dst = cv2.addWeighted(src1,alpha,src,beta,gamma)
# 结果图像=图像1*系数1+图像2*系数2+亮度调节量

alpha、beta是src1、src2的系数,它们的和可以是1,也可以不是1,gamma可以是0,但是是必选参数,不能省略。
例1:使用函数cv2.addWeighted()对两幅图像进行加权混合。

import cv2
a = cv2.imread("C:\\Users\\Kris\\Desktop\\lake.tif")
b = cv2.imread("C:\\Users\\Kris\\Desktop\\house.tif")
result = cv2.addWeighted(a,0.6,b,0.4,0)
cv2.imshow("lake",a)
cv2.imshow("house",b)
cv2.imshow("result",result)
cv2.waitKey()
cv2.destroyWindows()

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
例2:使用cv2.addWeighted()将一幅图像的ROI混合在另外一幅图像内。

import cv2
lake = cv2.imread("C:\\Users\\Kris\\Desktop\\lake.tif",cv2.IMREAD_UNCHANGED)
house = cv2.imread("C:\\Users\\Kris\\Desktop\\house.tif",cv2.IMREAD_UNCHANGED)
cv2.imshow("lake",lake)
cv2.imshow("house",house)
face1 = lake[160:256,200:256]
face2 = house[160:256,200:256]
add = cv2.addWeighted(face1,0.6,face2,0.4,0)
house[160:256,200:256] = add
cv2.imshow("result",house)
cv2.waitKey()
cv2.destroyWindows()

结果如下图所示:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值