2011-07-13 6 views
2

キーが押されたときにウェブカメラから画像をキャプチャしようとしています。次のコードは成功しましたpythonでopencvを使用してキーがヒットしたときに、カメラストリームからフレームをキャプチャする方法は?

import cv 

    cv.NamedWindow("w1") 
    camera = cv.CaptureFromCAM(-1) 

    while True: 

     key = cv.WaitKey(0); 

     if key == 'q': 
      break; 
     image = cv.QueryFrame(camera) 
     cv.ShowImage("w1", image) 


    cv.DestroyWindow("w1") 

最初のキーを押しても問題ありません。次のキーダウンでは、移動した場合でも最初のキーダウンに非常に近いフレームが表示されます。いくつかのキーを押すと、実際の画像に変わります。私は推測できることは、フレームが格納されているバッファの種類があることです。 キーがヒットしたときに、正確なフレームを取得するのに助けてくれたらと思っています。

私はopencvを使ってPythonのインタフェースを使用しています。オペレーティングシステムは、ubuntu 11.04です。キャプチャフレームの呼び出しはv4lライブラリに送られます。私は私のdellラップトップと統合されたウェブカメラを持っています。

誰かがこの問題で私を助けることができるのだろうかと思います。

どうもありがとう

答えて

3

私はあなたがわずかに異なる方法でそれを試してお勧め:

import cv 

cv.NamedWindow("w1") 
camera = cv.CaptureFromCAM(-1) 

while True: 
    image = cv.QueryFrame(camera) 
    key = cv.WaitKey(33) 

    if key == 'q': 
     break 
    elif key != -1: 
     cv.ShowImage("w1", image) 

cv.DestroyWindow("w1") 

お知らせcv.WaitKeyへの呼び出し()の変化:代わりにブロックするの、待つだけ合理的な時間です。次に、キーが実際に押されたかどうかを確認します(key!= -1)。

あなたのコードはOpenCV 2.3のMac OS X 10.6で動作することに注意してください。

+0

@ cesarbs、これは素晴らしい方法ですが、問題は、システムに負担をかけるようなフレームを絶えず検索することです。あなたは継続的な検索でそれをやるという考えはありますか?どうもありがとう。 – Shan

関連する問題