Opencv3相机发行版不适用于PyQt5

时间:2018-10-26 03:42:14

标签: python opencv pyqt pyqt5 opencv3.0

我正在使用opencv3通过网络摄像头捕获图像。然后,我使用PyQt5显示要标记的图像。这是下面的代码。我在这里遇到的问题是,捕获图像后相机不会脱离。我必须手动关闭程序/停止脚本,以使相机灯熄灭。我想念什么吗?我的知识差距在哪里?我该如何解决?

class View_image(QtWidgets.QWidget):
    def __init__(self, parent = None):
        QtWidgets.QWidget.__init__(self, parent)
        self.ui = view_image_dialog.Ui_Dialog()
        self.ui.setupUi(self)
        self.ui.pushButton.clicked.connect(self.button_clicked)

    def button_clicked(self):
        cap = cv2.VideoCapture(0)

        if cap.isOpened():
            ret, frame = cap.read()
        else:
            ret = False
        cap.release()

        image_Qt=QImage(frame,frame.shape[1],frame.shape[0],QImage.Format_RGB888)
        imgswap = image_Qt.rgbSwapped()
        self.ui.label.setPixmap(QPixmap.fromImage(imgswap))


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    c = View_image()
    c.show()
    sys.exit(app.exec_())

我可以捕获图像,但是捕获图像后,相机不会脱离。我可以继续捕获图像并显示为标签,但是在外壳程序中出现错误/警告,如下所示:

[ WARN:0] videoio(MSMF): OnReadSample() is called with error status: -1072873821
[ WARN:0] videoio(MSMF): async ReadSample() call is failed with error status: -1072873821

我正在使用opencv3,Windows 10 64位,PyQt5 5.11.2

0 个答案:

没有答案