圖片處理之圖片融合及GIF圖片生成

今天在這裏分享一下圖片融合的相關內容。圖片融合是個很有趣的事情,比如說,換臉操作,一副圖片慢慢變成另一幅圖片,自己弄一個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 !!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章