zl程序教程

您现在的位置是:首页 >  其他

当前栏目

图片处理之图片融合及GIF图片生成

2023-03-14 22:42:07 时间

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