我正在开发一个PyQT应用程序,但我无法在其框架中实现CV类。这是有问题的类,以及错误的来源。在
class ShowVid(QObject):
signal = pyqtSignal(QImage)
def __init__(self):
super().__init__()
@pyqtSlot()
def startVideo(self):
camera_port = 0
camera = cv2.VideoCapture(camera_port)
run_video = True
while run_video:
ret, image = camera.read()
color_swapped_image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
height, width, _ = color_swapped_image.shape
qt_image = QImage(color_swapped_image.data,
width,
height,
color_swapped_image.strides[0],
QImage.Format_RGB888)
self.signal.emit(qt_image)
我收到错误:
^{pr2}$使用Main和VidViewer类中的代码进行更新。VidViewer类从相机捕获的帧中绘制图像。帧由setImage插槽刷新。主类用布局构造小部件并运行应用程序。在
class VidViewer(QWidget):
def __init__(self):
super().__init__()
self.layout = QGridLayout()
self.image = QImage()
self.initUI()
def paintEvent(self, _):
print("paint image")
painter = QPainter(self)
painter.drawImage(0, 0, self.image)
self.paintImage = QImage()
def initUI(self):
print("INIT UI")
#image = self.image
self.push_button = QPushButton("Start")
self.push_button.clicked.connect(ShowVid.startVideo)
self.layout.addWidget(self.push_button, 0, 0,1,1)
self.setLayout(self.layout)
self.setWindowTitle('Test')
self.show()
@pyqtSlot(QImage)
def setImage(self, image):
self.image = image
self.paintEvent()
class Main(QMainWindow):
def __init__(self):
super().__init__()
self.central_widget = QStackedWidget()
self.setCentralWidget(self.central_widget)
self.viewer = VidViewer()
self.vid = ShowVid()
self.central_widget.addWidget(self.viewer)
self.central_widget.setCurrentWidget(self.viewer)
self.vid.signal.connect(self.viewer.setImage)
self.setGeometry(10,10,1280,720)
self.setFixedSize(1280,720)
app = QApplication(sys.argv)
run = Main()
run.show()
sys.exit(app.exec_())
目前没有回答
相关问题 更多 >
编程相关推荐