cv2 Python 图像混合 "渐变" 转换

4
我正在使用Python的cv2。我已经接近创建两个图像之间的“淡入淡出”转换,但我没有得到我希望的结果。
我的目标是随着我的fadein变量的计数逐渐传递给cv2.addWeighted函数,从而创建一个随着fadein变量变化而变化的混合效果。
总之,就是电影中的交叉淡入淡出效果。问题在于当fadein变量达到最大范围时,图像会跳到下一张。
[编辑] 我的问题是cv对象与我的动态fadein变量不同时运行。
def fadeIn (img1, img2): #pass images here to fade between
        while True:
                for FADEIN in range(0,10):
                        fadein = FADEIN/10.0
                        fadeout=1.0
                        fadeout -= 0.1
                        dst = cv2.addWeighted( img1, fadeout, img2, fadein, -1)#linear $
                        cv2.imshow('window', dst)
                        print fadein
                        time.sleep(0.05);
                        if fadein == 1.0: #blendmode mover
                                fadein = 1.0
                return # exit function

while True:
  if Position == 55:
  fadeIn(dog, panda)
2个回答

3

你的代码还缺少淡出效果的反向(即 1-淡入效果),我也添加了一个动态长度设置。

def fadeIn (img1, img2, len=10): #pass images here to fade between
    while True:
        for IN in range(0,len):
            fadein = IN/float(len)
            dst = cv2.addWeighted( img1, 1-fadein, img2, fadein, 0)
            cv2.imshow('window', dst)
            cv2.waitKey(1)
            print fadein

1
啊,我漏掉了cv2.waitKey(1) 我修改后的图像融合过渡函数:
def fadeIn (img1, img2): #pass images here to fade between
        #while True:
        for IN in range(0,10):
                fadein = IN/10.0
                dst = cv2.addWeighted( img1, fadein, img2, fadein, 0)#linear $
                cv2.imshow('window', dst)
                cv2.waitKey(1)
                print fadein
                time.sleep(0.05)
                if fadein == 1.0: #blendmode mover
                        fadein = 1.0
        return # exit function

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接