今天在这里分享一下图片融合的相关内容。图片融合是个很有趣的事情,比如说,换脸操作,一副图片慢慢变成另一幅图片,自己弄一个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 !!!
公众号:FPGA之旅