我正在尝试与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,然后将其分配给我想要生成的图像的实际值),但它不会改变任何内容。
我找了那个练习的答案,但没找到。
你能帮我吗?
答案 0 :(得分:3)
这是罪魁祸首:
if i == 10 | i == 0:
应该是:
if i == 10 or i == 0:
(单个|是二进制,或者不是逻辑的)
(让我猜一下,你原本试过i == 10 || i == 0,(比如在c或java中)并发现它不是有效的python)。