pyQT编写界面调用摄像头
1、首先要知道使用命令调用摄像头,并将其写成一个槽函数,这样方便以后增加新操作
def PrepCamera(self): self.camera = cv2.VideoCapture(0)
2、下面编写一个简单界面,我将要调用摄像头的Qlabel放在下图选中的位置,当点击开始按钮时,能调用打开摄像头的操作,当然不是上面那个,Qlabel要实现显示摄像头还需要很多操作
3、这里设置函数
def StartCamera(self): self.Timer.start(1) self.timelb = time.clock()
这个函数的作用是刷新Qlabel,每隔1毫秒执行一次self类,为什么呢,因为要执行这个操作:
self.Timer.timeout.connect(self.TimerOutFun)
每隔一毫秒会执行一次TimerOutFun函数,那这个函数的功能是什么:
def TimerOutFun(self): success, img = self.camera.read() if success: self.Image = img self.DispImg()
就是为了获取到摄像头的实时图片,得到之后会执行self.DispImg()这个函数,这个函数的作用是改变图片数据类型,并将图片用过QLabel展示出来:
def DispImg(self): img = cv2.cvtColor(self.Image, cv2.COLOR_BGR2RGB) qimg = qimage2ndarray.array2qimage(img) self.DispLb.setPixmap(QPixmap(qimg)) self.DispLb.show()
这样我们就可以在界面调用摄像头了: