I want to make Webcam gui so that when I click the cam on button the second window pops up and video will start.
When I click the return button the video should stop and go to mainwindow, but when i try, I can't see video, even if the flag is printed.
import threading
import cv2
import threading
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtTest import *
from PyQt5 import QtWidgets
from PyQt5 import QtGui
from PyQt5 import QtCore
running = False
class MyApp(QMainWindow, QWidget):
def __init__(self):
super().__init__()
self.second_UI = QDialog()
self.label = QtWidgets.QLabel()
self.first_UI()
self.show()
def first_UI(self):
btn_start = QPushButton("cam on", self)
btn_start.move(50, 50)
btn_start.clicked.connect(self.cam_start)
btn_start.clicked.connect(self.second_exc)
self.sb = self.statusBar()
self.sb.showMessage('Ready')
# Window setting
self.setWindowTitle('Select Servo Motor')
self.setGeometry(300, 300, 1024, 768)
self.show()
def cam_run(self):
global running
print("Flag1")
self.cap = cv2.VideoCapture(0)
# 'http://192.168.66.1:9527/videostream.cgi?loginuse=admin&loginpas=admin')
self.wid = 500
self.hei = 500
self.label.resize(self.wid, self.hei)
while running:
print("Flag2")
self.ret, self.img = self.cap.read()
if self.ret:
self.img = cv2.cvtColor(self.img, cv2.COLOR_BGR2RGB)
self.h, self.w, self.c = self.img.shape
self.qImg = QtGui.QImage(self.img.data, self.w, self.h, self.w*self.c,
QtGui.QImage.Format_RGB888)
self.pixmap = QtGui.QPixmap.fromImage(self.qImg)
self.label.setPixmap(self.pixmap)
print("Flag3")
self.cap.release()
print("Thread end.")
def cam_start(self): # , UI_param):
#UI_param = self.second_UI
global running
running = True
self.th = threading.Thread(target=self.cam_run)
self.th.start()
print("started...")
def second_exc(self):
self.close()
self.cam_run
return_btn = QPushButton('Return', self.second_UI)
return_btn.move(50, 700) # set position
# return_btn.resize(return_btn.sizeHint())
return_btn.clicked.connect(self.first_UI)
self.second_UI.setWindowTitle('Select User Mode')
self.second_UI.setGeometry(300, 300, 1024, 768)
self.second_UI.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex_ = MyApp()
sys.exit(app.exec_())
