import cv2
import threading
import sys
from PyQt5 import QtWidgets
from PyQt5 import QtGui
from PyQt5 import QtCore
running = False
def run():
global running
cap = cv2.VideoCapture(0)
width = cap.get(cv2.CAP_PROP_FRAME_WIDTH)
height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)
label.resize(width, height)
while running:
ret, img = cap.read()
if ret:
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
h,w,c = img.shape
qImg = QtGui.QImage(img.data, w, h, w*c, QtGui.QImage.Format_RGB888)
pixmap = QtGui.QPixmap.fromImage(qImg)
label.setPixmap(pixmap)
else:
QtWidgets.QMessageBox.about(win, "Error", "Cannot read frame.")
print("cannot read frame.")
break
cap.release()
print("Thread end.")
def stop():
global running
running = False
print("stoped..")
def start():
global running
running = True
th = threading.Thread(target=run)
th.start()
print("started..")
def save():
pass
def onExit():
print("exit")
stop()
app = QtWidgets.QApplication([])
win = QtWidgets.QWidget()
vbox = QtWidgets.QVBoxLayout()
label = QtWidgets.QLabel()
btn_start = QtWidgets.QPushButton("Camera On")
btn_stop = QtWidgets.QPushButton("Camera Off")
btn_save = QtWidgets.QPushButton("Camera Save")
vbox.addWidget(label)
vbox.addWidget(btn_start)
vbox.addWidget(btn_stop)
win.setLayout(vbox)
win.show()
btn_start.clicked.connect(start)
btn_stop.clicked.connect(stop)
btn_save.clicked.connect(save)
app.aboutToQuit.connect(onExit)
sys.exit(app.exec_())
여기서 카메라를 두개 더 늘리는 것 까진 어떻게 했는데,
저장기능은 아직 구현하지 못함 ㅠㅠ..