今天在這裏分享一下圖片融合的相關內容。圖片融合是個很有趣的事情,比如說,換臉操作,一副圖片慢慢變成另一幅圖片,自己弄一個GIF圖片出來,在這裏都會簡單地介紹到。
1.首先先來說一下圖片融合,簡單來說就是兩幅圖片相應位置的像素的加法操作。
這裏介紹一下opencv裏面的兩個函數
① cv2.add(img1,img2) img1與img2進行加法操作,對超過255的值取255.
②cv2.addWeighted(img1,w1,img2,w2,gamma)
result = img1 * w1 + img2 *w2 + gamma。
w1對應img1的權重,w2對應img2的權重,
gamma爲img1與img2求和後增加的數值,
從公式中可以看出來,一般都設置爲0,處理後的圖片存在透明度。
下面利用代碼來設置一張圖片慢慢變成另外一張圖片
import cv2
img1 = cv2.imread('1.jpg')
img2 = cv2.imread('2.jpg')
h,w = img1.shape[:2]
img2 = cv2.resize(img2,(w,h))
t = 0
while(1):
img = cv2.addWeighted(img1,t,img2,1-t,0)
t = t + 0.01
if (t == 1):
t=0
if cv2.waitKey(1) == ord('q'):
break
代碼的實現很簡單,下面來說一下如何生成GIF圖片,來將兩種圖片生成一張有趣的GIF圖片。
先將上面代碼生成的每一張圖片保存下來。
其次是你要安裝imageio包,用於生成GIF圖片。
原理很簡單,就是在很短的時間內切換圖片,已達到動態的效果。
先上代碼吧。
import imageio
def main():
image_list = [] #剛剛保存圖片的文件路徑 ,注意圖片路徑的順序
frame = []
for path in image_list:
frame.append(imageio.imread(path)) #按順序讀取每一張圖片並添加到列表中
imageio.mimsave('my_first',frame,'GIF',duration = 0.00002)
#生成gif圖片 ,第一個參數是生成圖片的名稱,第二個參數是圖片列表,第四個參數是切換圖片的間隔時間,越短,圖片變換就越連貫。
是不是很簡單?那就趕快去動手實現一下吧,通過這些簡單的操作,還可以完成其他很多有趣的事情呢!!!
Thank for your reading !!!