a) addWeighted()
利用cv2.addWeighted()函数将两个大小不同的照片(lena.png)+ (logo.png 任务2中生成的)混合在一起
提示:
cv2.addweighted()函数只能用于操作两个尺寸相同的图片,可以先在lena.png中去尺寸和logo.png相同的ROI区域,将这个区域和logo.png进行混合
import cv2
import numpy as np
lena = cv2.imread('F:/img/lena.png')
logo = cv2.imread('F:/img/logo.png')
rows,cols = logo.shape[:2]
roi = lena[0:rows,0:cols]
dst = cv2.addWeighted(logo,0.65,roi,0.35,0)
add_img = lena.copy()
add_img[0:rows,0:cols] = dst
cv2.imshow('Add_Img',add_img)
cv2.waitKey(0)
b)bitwise_and()+add()
将两幅图像(lena.png)+ (logo.png)进行融合
提示:
#1,在lena.png获取和logo.png大小相同的ROI
#2,基于logo.png的灰度图,利用简单的阈值分割创建一个掩模
#3,将roi与掩模进行按位与操作,去掉logo中非0部分,得到新的图
#4,将新图与logo相加,然后将这一部分替换掉原始图像的roi部分
import cv2
import numpy as np
#加载图片
lena = cv2.imread('F:/img/lena.png')
logo = cv2.imread('F:/img/logo.png')
#把logo放在左上角
rows,cols = logo.shape[:2]
roi = lena[0:rows,0:cols]
#创建掩膜
logogray = cv2.cvtColor(logo, cv2.COLOR_BGR2GRAY)
ret, mask = cv2.threshold(logogray, 10, 255, cv2.THRESH_BINARY)
mask_inv = cv2.bitwise_not(mask)
img2 = cv2.bitwise_and(roi,roi,mask = mask_inv)
#cv2.imshow('1',img2)
dst = cv2.add(logo,img2)
#cv2.imshow('2',dst)
lena[0:rows,0:cols] = dst
cv2.imshow('And_Img_of_lindun',lena)
cv2.waitKey(0)
cv2.destroyAllWindows()
c) bitwise_and()+addWeighted()
将两幅图像(lena.png)+ (logo.png)进行融合
import cv2
import numpy as np
#加载图片
lena = cv2.imread('F:/img/lena.png')
logo = cv2.imread('F:/img/logo.png')
#把logo放在左上角
rows,cols = logo.shape[:2]
roi = lena[0:rows,0:cols]
#创建掩膜
logogray = cv2.cvtColor(logo, cv2.COLOR_BGR2GRAY)
ret, mask = cv2.threshold(logogray, 10, 255, cv2.THRESH_BINARY)
mask_inv = cv2.bitwise_not(mask)
img2 = cv2.bitwise_and(roi,roi,mask = mask_inv)
dst = cv2.add(logo,img2)
dst_1 = cv2.addWeighted(roi,0.6,dst,0.4,0)
lena[0:rows,0:cols] = dst_1
#lena[0:rows,0:cols] = dst
cv2.imshow('And_Img_of_lindun_2',lena)
cv2.waitKey(0)
cv2.destroyAllWindows()