opencv位运算及加权运算

1 位运算

  主要包括“与”、“或”、“非”、“异或”。每种运算逻辑相信每个人都学过,这里就不做过多解释。按位运算可以实现特定位置的图像融合,比如加logo。

函数名称说明
bitwise_add
bitwise_or
bitwise_xor异或
bitwise_not
# -*- coding:utf-8 -*-
import cv2
import numpy as np

img = cv2.imread('1.jpg')
logo = cv2.imread('opencv.png')

#调整大小
logo = cv2.resize(logo, (50, 50))

#图像宽度
imgWidth = img.shape[1]

#logo高度
logoHeight = logo.shape[0]

# 在右上角创建logo图像大小的ROI感兴趣的区域,距上右边距各50像素
roi = img[50 : 50 + logoHeight, imgWidth - 100 : imgWidth - 50]

# 创建logo掩码和掩码取反
img2gray = cv2.cvtColor(logo, cv2.COLOR_BGR2GRAY)
ret, mask = cv2.threshold(img2gray, 200, 255, cv2.THRESH_BINARY)
mask_inv = cv2.bitwise_not(mask)

# 取反和相与操作
bg = cv2.bitwise_and(roi, roi, mask = mask)

# 取反和相与操作
fg = cv2.bitwise_and(logo, logo, mask = mask_inv)

# 将logo放到整张图像上
dst = cv2.add(bg, fg)
img[50 : 50 + logoHeight, imgWidth - 100 : imgWidth - 50] = dst

ret = cv2.resize(img, dsize = None, fx = 0.5, fy = 0.5)

cv2.imshow('res', ret)
cv2.waitKey(0)
cv2.destroyAllWindows()
2 加权融合

  实现图像的叠加和融合,以如下两张图为例。

# -*- coding:utf-8 -*-
import cv2
import numpy as np

img1 = cv2.imread('lf1.webp')
img2 = cv2.imread('lf2.webp')

img = cv2.addWeighted(img1, 0.3, img2, 0.7, 0)

ret = cv2.resize(img, dsize = None, fx = 0.5, fy = 0.5)

cv2.imshow('res', ret)
cv2.waitKey(0)
cv2.destroyAllWindows()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值