2016-06-28 3 views
1

私はウェブカメラのカメラのライブフィードを見ています。私はこれをTkinterのGUIに組み込み、カメラのインデックスを変更できるドロップダウンの選択をして、その場で使用されているWebカメラを使用したいと思います。 これはどのように達成できますか?Python OpenCV - ライブウェブカムビューのカメラインデックスを更新

例コード:

import cv2 

def show_webcam(mirror=False): 
    cam = cv2.VideoCapture(0) 
    while True: 
     ret_val, img = cam.read() 
     if mirror: 
      img = cv2.flip(img, 1) 
     cv2.imshow('my webcam', img) 
     if cv2.waitKey(1) == 27: 
      break # esc to quit 
    cv2.destroyAllWindows() 

def main(): 
    show_webcam(mirror=True) 

if __name__ == '__main__': 
    main() 

答えて

2

実行時にカメラを変更するには、変更する必要があるすべては、あなたが cv2.VideoCapture(index)に渡すインデックスです。

アプリのために使用されますどのように多くのカメラを見つけると、3台のカメラのために、あなたは0または1または

2にインデックスを変更して、それを変更することができ、インデックス show_webcam(mirror=True, index)

ように、1つ以上のパラメータを追加します。しかし、どのように私はshow_webcam()関数をやめて、CAを再初期化するプログラムを教えてください -

機能面では、私はそれを実行する必要があります感謝この

def show_webcam(mirror=False,index): cam = cv2.VideoCapture(index) while True: ret_val, img = cam.read() if mirror: img = cv2.flip(img, 1) cv2.imshow('my webcam', img) if cv2.waitKey(1) == 27: break # esc to quit cv2.destroyAllWindows()

+0

を使用することができます別のインデックスの下でメアビュー? – Samuel

+0

私はpyqt5の下で同じことを作成しました。私がしたことは、私はcamがself.camであると宣言して、クラス内のどこにでもアクセスできました。だから私は新しいカメラを選択するドロップダウンを変更するとき、私はshow_webcam関数への入力としてドロップダウンインデックスを送信します。ドロップダウンリストのon changeイベントを使用して、新しいインデックスをドロップダウンしてshow_webcam関数に渡します。 –

+0

これは新しいカメラに変更しますが、その前に私はself.cam.release()によって前のカメラをリリースしました。 –