【发布时间】:2013-03-10 15:44:46
【问题描述】:
我一直在寻找类似的东西,但我找不到,所以就在这里。
一些背景
我使用 opencv 从视频文件中检索帧。通常人们会在一个无限循环中这样做:
while (True):
s, img = cv.read()
或
for i in xrange(10000): #just a big number
s, img = cv.read()
现在我想检索所有帧并在没有更多帧时退出循环。但是,我在 python 方面的技能还不够强大,无法做我想做的事情。
我想知道的
read函数(或者方法,我不知道在python中是怎么调用的)返回一个元组:第一个代表操作成功,第二个代表返回的帧。当元组的第一个元素为假时,我想打破 while 循环。有 C 背景,我认为这可能会起作用:
while ((success, img = capture.read())[0]):
#do sth with img
我认为如果成功为假,这将打破循环。但它没有。然后我想也许这会起作用:
while ((success, img = capture.read()).success):
#do sth with img
它也没有工作。我不想做类似的事情
while(True):
s, i = capture.read()
if (s == False):
break
如何测试while 中的条件,而不是测试成功后中断的if 中的条件?
【问题讨论】:
-
有什么理由不想做最后一件事(哪种 IMO 是正确的方法)?
-
我支持@RedBaron。我认为你的最后一段摘录是迄今为止最清晰的。
-
我认为
while的条件应该是循环条件。 -
值得注意的是,在python中,不能在while或if语句的条件下进行赋值。
-
顺便说一句:人们不写
while(True),他们写while True。不需要括号,它们只会增加表达式的复杂性。
标签: python python-2.7 opencv while-loop conditional