图像的算术运算 - OpenCV Python练习

时间:2014-05-27 17:14:21

标签: python image opencv

我正在尝试与OpencV Python教程(http://docs.opencv.org/trunk/doc/py_tutorials/py_core/py_image_arithmetics/py_image_arithmetics.html#image-arithmetics)中的“图像的算术运算”一章相关的练习。

1. Create a slide show of images in a folder with smooth transition between images using cv2.addWeighted function

这是我的代码:

import cv2
import numpy as np
import time

img1 = cv2.imread('add1.jpg')
img2 = cv2.imread('add2.jpg')
res = img1
i = 10
inc = 1
cv2.imshow('res',res)
while(1):
    if(cv2.waitKey(1) & 0xFF == ord('q')):
        break
    else:
        newimg = np.zeros((640,480))
        res = cv2.addWeighted(img1,0.1*i,img2,0.1*(10-i),0)
        if i == 10 | i == 0:
            inc = -inc
        i = i + inc
        cv2.imshow('res',res)
        time.sleep(0.2)

在这里,我只是想在两个选定的图像(均为640x480)之间不断地来回走动,但是我的代码似乎将新生成的图像与旧图像相加。几秒钟后,由于这个原因,我最终得到了一张黑色和红色的图像。我也尝试了其他解决方案(例如将res设置为0,然后将其分配给我想要生成的图像的实际值),但它不会改变任何内容。

我找了那个练习的答案,但没找到。

你能帮我吗?

1 个答案:

答案 0 :(得分:3)

这是罪魁祸首:

if i == 10 | i == 0:

应该是:

if i == 10 or i == 0:

(单个|是二进制,或者不是逻辑的)

(让我猜一下,你原本试过i == 10 || i == 0,(比如在c或java中)并发现它不是有效的python)。