2016-06-28 198 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()发布了前一个相机。 –