私はこのようなものを探していましたが、見つけることができなかったので、ここに行きます。
いくつかの背景
opencvを使用して、ビデオファイルからフレームを取得します。通常、人々は次のような無限ループでそれを行います。
while (True):
s, img = cv.read()
また
for i in xrange(10000): #just a big number
s, img = cv.read()
今、私はすべてのフレームを取得し、フレームがなくなったらループを終了したいと思います。しかし、Pythonでの私のスキルは、私がやりたいことを実行するのに十分なほど強力ではありません。
知りたいこと
read
関数(またはメソッド、Pythonでどのように呼び出されるかはわかりません)はタプルを返します。最初は操作の成功を表し、2番目は返されたフレームを表します。タプルの最初の要素がfalseの場合、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