2016-06-28 197 views
1

我正在查看攝像頭攝像頭實時饋送。我想將它融入到Tkinter GUI中,並有一個下拉選項,允許用戶更改相機索引,從而更改正在使用的網絡攝像頭。 這是如何實現的?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)

在功能方面,你可以使用這個

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

我明白,需要做 - 但我怎麼告訴程序停止做show_webcam()函數,並重新初始化CA mera視圖下不同的索引? – Samuel

+0

我在pyqt5下創建了同樣的東西。我做的是,我宣稱凸輪是self.cam可以在課堂上任何地方訪問。所以當我改變下拉選擇新的相機,我發送下拉索引作爲show_webcam函數的輸入。我使用下拉列表的on change事件來獲取下拉的新索引並將其傳遞給show_webcam函數。 –

+0

這改變了新的相機,但在此之前,我通過self.cam.release()發佈了前一個相機。 –