我有一个数据收集软件,该软件需要来自两个不同相机源的相机馈送,一个是Brio网络摄像头,另一个是通过USB捆绑连接的IP网络摄像头。 现在,当我编辑用于流式传输两个多部视频的代码时,它只显示一个,而不显示另一个。 代码如下:
import sys
import cv2
#from gsp import GstreamerPlayer
import datetime
from pyfirmata import util, Arduino
from PyQt5 import QtCore, QtGui
import openpyxl
from openpyxl import load_workbook
from PyQt5.QtCore import pyqtSlot, QThread, pyqtSignal
from PyQt5.QtGui import QImage, QPixmap
from PyQt5.QtWidgets import QLayout, QDialog, QApplication, QMainWindow, QFileDialog, QPushButton, QWidget, QLabel
from PyQt5.uic import loadUi
import xlrd
from xlutils.copy import copy
import serial
import xlsxwriter
from xlwt import Workbook
sys.setrecursionlimit(15000)
# For the camera feed
class Thread(QThread):
changePixmap = pyqtSignal(QImage)
def run(self):
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
if ret:
rgbImage = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
convertToQtFormat = QImage(rgbImage.data, rgbImage.shape[1], rgbImage.shape[0], QImage.Format_RGB888)
p = convertToQtFormat.scaled(256, 181)
self.changePixmap.emit(p)
class Thread1(QThread):
changePixmap = pyqtSignal(QImage)
def run(self):
cap = cv2.VideoCapture('http://192.168.42.129:8080/video')
while True:
ret, frame = cap.read()
if ret:
rgbImage = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
convertToQtFormat = QImage(
rgbImage.data, rgbImage.shape[1], rgbImage.shape[0], QImage.Format_RGB888)
p1 = convertToQtFormat.scaled(111, 181)
self.changePixmap.emit(p1)
主要的调用函数如下:
@pyqtSlot(QImage) def setImage(self, image): self.webcam.setPixmap(QPixmap.fromImage(image)) @pyqtSlot(QImage) def setImage1(self, image): self.webcam_2.setPixmap(QPixmap.fromImage(image)) def initUI(self): th = Thread(self) th1 = Thread1(self) th1.changePixmap1.connect(self.setImage1) th.changePixmap.connect(self.setImage) th.start()
我是python编程的新手,有人可以告诉我我在做什么错吗?我尝试了在函数中进行流传输并设置流传输的另一种方法,但这不是常规方法,因为我的应用程序由于while循环*(我猜)*而不断崩溃。 如果我一次使用一个来源,那么它可以工作,但是我似乎无法一次使用它们。
答案 0 :(得分:0)
我没有添加
thread.start()
之前的功能。