2017-10-18 3 views
0

以下のコードがあります。それはfine.ieそれはフレームの数秒後にカメラの電源をオフにし、カメラの電源を入れて、フレームのカップルを取るfine.ieの数を取ります。以下のコードはラズベリーパイのコードをテストするたびに、私のデスクトップ上で正常に動作しますforループの最初の繰り返しがうまく動作しますが、forループの2回目の反復で、それはVideoCaptureが偽opencvで間隔を置いて撮影したラズベリのカメラフレーム数

import cv2 
import time 
timeout=time.time()+10 
for f in range(3): 
    cap = cv2.VideoCapture(camera_port) 
     count = 1 

     while True: 

      ret, img = cap.read() 
      print(ret) 
      cv2.imshow('image', img) 
      cv2.imwrite('Datasets/T' + str(f + 1) + '/' + str(count) + '.tif', img) 
      print(cap.get(cv2.CAP_PROP_FPS)) 
      if time.time() > timeout: 
       break 

      if cv2.waitKey(1) & 0xFF == ord('q'): 
       break 
      count = count + 1 

     for _ in range(10): 
      cv2.destroyAllWindows() 
     if f!=2-1: 
      cap.release() 
      time.sleep(delay_after_one_video) 
     cap=cv2.VideoCapture(camera_port) 

     timeout=time.time()+10 
+0

videocapture()オブジェクトをリベースして再作成する理由はありますか?それを接続したままにしておくと、画像が必要なときにread()を呼び出すほうが簡単です。カメラをオフにするには –

+0

を使用してください。オブジェクトを再作成してください...バッファも空にしておきます。 –

+0

ループ内で 'cv2.destroyAllWindows'を使っているのはなぜですか?関数を一度呼び出すだけで済みます。 – zindarod

答えて

0

を返す与えるものではありません、私はコメントすることはできませんので、私は答えを投稿します。

カメラリソースを解放できないようです(もしそうなら、カメラのプロパティを設定することはできません)。自分でOpenCVを構築してみてください。v4lライブラリをチェックしてください。

関連する問題