1

私はpythonバインディングでopenkinectを使用しており、次のデモアプリを実行しています...

   #!/usr/bin/env python
   import freenect
   import cv
   import frame_convert

   cv.NamedWindow('Depth')
   cv.NamedWindow('Video')
   print('Press ESC in window to stop')


   def get_depth():
       return frame_convert.pretty_depth_cv(freenect.sync_get_depth()[0])


   def get_video():
       return frame_convert.video_cv(freenect.sync_get_video()[0])


   while 1:
       cv.ShowImage('Depth', get_depth())
       cv.ShowImage('Video', get_video())
       if cv.WaitKey(10) == 27:
           break

エスケープを押しても、このプログラムは停止しません。だから私は次のようにそれを実行しようとしました

   #!/usr/bin/env python
   import freenect
   import cv
   import frame_convert

   cv.NamedWindow('Depth')
   cv.NamedWindow('Video')
   print('Press ESC in window to stop')


   def get_depth():
       return frame_convert.pretty_depth_cv(freenect.sync_get_depth()[0])


   def get_video():
       return frame_convert.video_cv(freenect.sync_get_video()[0])


   for i in range(10):
       cv.ShowImage('Depth', get_depth())
       cv.ShowImage('Video', get_video())
       if cv.WaitKey(10) == 27:
           break

10回だけ実行します。

問題は、プログラムが停止せず、画像を表示し続けることです。kinectを停止する必要があると思います。

特定の時間インスタンスで深度画像を取得したい。つまり、kinect を再起動する必要があります。常に実行し続けることはできません。

誰でもこれで私を助けてくれませんか。

4

3 に答える 3

1

Kinect を停止する必要はありません。while を中断する条件が満たされたことがないようです。これは、プラットフォーム、opencv のバージョン、およびその他のいくつかの要因に依存する場合があります。次のようなものを試してください:

while 1:
       cv.ShowImage('Depth', get_depth())
       cv.ShowImage('Video', get_video())
       k = cv.WaitKey(10) # k contains integer keycode
       if chr(k) == 'q': # press q to exit
           break

ESC キーを押してもキーコード 27 が渡されない理由を再確認するには、上記cv.WaitKeyのキーコードを印刷して、ESC を押したkときに何が起こるかを確認します。

于 2012-03-26T21:41:54.497 に答える
0

「q」の代わりに「q」の int 値を使用する

于 2014-02-06T20:08:55.763 に答える
0
k=0
while k != 1048689:   # key value of 'q' is 1048689
    cv.ShowImage('Depth', get_depth())
    cv.ShowImage('Video', get_video())
    k = cv.WaitKey(10) # k contains integer keycode
于 2014-09-14T00:20:55.357 に答える