圖像相加 1、(+)法 import cv2 as cv img1=cv.imread("E:/image/add1.jpg") img2=cv.imread("E:/image/add5.jpg") result=img1+img2#加法運算 cv.imshow("1",img1) cv.imshow("2",img2) cv.imshow("add",result) 2、add()函數(shù) 從上圖中看出,相加的結(jié)果并不是很理想,所以推薦用opencv的函數(shù)add(),有些地方也叫它圖像合成或圖像融合。 它與+的區(qū)別在于,當(dāng)相加的值>255時,它是截斷了,即: f(x,y)=f(x,y)-255 代碼如下 import cv2 as cv img1=cv.imread("E:/image/add1.jpg") img2=cv.imread("E:/image/add4.jpg") result=cv.add(img1,img2) cv.imshow("1",img1) cv.imshow("2",img2) cv.imshow("add",result) 3、addWeighted()權(quán)重相加 可以給兩幅圖像不同的權(quán)重來進(jìn)行相加。 代碼如下: import cv2 as cv img1=cv.imread("E:/image/add1.jpg") img2=cv.imread("E:/image/add5.jpg") result=cv.addWeighted(img1,0.7,img2,0.3,0) cv.imshow("1",img1) cv.imshow("2",img2) cv.imshow("add",result) 4、兩幅圖像的平滑過渡: import cv2 import numpy as np def nothing(x): pass img1 = cv2.imread('E:/image/add1.jpg') img2 = cv2.imread('E:/image/add5.jpg') img = np.zeros((500,500,3), np.uint8) cv2.namedWindow('image')#創(chuàng)建一個窗口,名為image cv2.createTrackbar('Trackbar','image',0,100,nothing)#軌道欄名稱,窗體名,參數(shù)默認(rèn)值,最大值,回調(diào)函數(shù) while(True): cv2.imshow('image',img) if cv2.waitKey(1) & 0xFF==ord('q'): break #按q鍵退出 r = cv2.getTrackbarPos('Trackbar','image')#獲取滾動條的值 r=float(r)/100.0 img=cv2.addWeighted(img1,r,img2,1.0-r,0) |
|