python-opencv图像处理

一、图像混合

学习图片间的数学运算(相加、按位运算),图像混合

1.图片相加

cv2.add()函数实现两张图片的叠加,相加的两幅图片的形状(高度、宽度、通道数)必须相同

x = np.unit8([250])
#转变数据类型为unit8,unit8数据类型的取值范围是0-255
y = np.unit8([10])
print(cv2.add(x,y))
print(x+y)

2.图像混合

改变透明度

cv2.addWeighted()也是一种图片相加的操作,只不过两幅图片的权重不一样

img = cv2.imread("lena_small.jpg")
img2 = cv2.imread("opencv-logo-white.png")
res = cv2.addWeighted(img1,0.6,img2,0.4,0)
#cv2.Weighted()函数的参数:图片1,图片1的权重,图片2,图片2的权重

3.按位操作

按位操作包括与、或、非、异或

img1 = cv2.imread("lena.jpg")
img2 = cv2.imread("opencv-logo-white.png")

#把logo方在左上角,所以我们只关心这一块区域
rows,cols = img2.shape[:2]
#img.shape[:2] 取彩色图片的长、宽。
#如果img.shape[:3] 则取彩色图片的长、宽、通道
roi = img1[:rows,:cols]
#将图片1的第一行到第rows行,第一列到第cols列的区域设置为roi(感兴趣区域)

#创建掩膜
img2gray = cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY)#将图片2转换为灰度图
ret,mask = cv2.threshold(img2gray,10,255,cv2.THRESH_BINARY)
#cv2.threshold()该函数通常用于从灰度图像中获取二进制图像,或用于消除噪声
mask_inv = cv2.bitwise_not(mask)
#cv2.bitwise_not()函数是取反操作,改变图片底色

#保留logo以外的背景
img1_bg = cv2.bitwise_and(roi, roi, mask=mask_inv)

#进行融合
dst = cv2.add(img1_bg, img2)

#融合后放在原图上
img1[:rows, :cols] = dst
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值