pytq5和opencv在python环境下获取摄像头保存图片和处理图片

摄像头窗口被锁定,无法再添加保存图像的窗口,所有代码如下:

import sys
import cv2

from PyQt5 import QtCore, QtGui,QtWidgets
import os


class Ui_MainWindow(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super(Ui_MainWindow, self).__init__(parent)

        self.timer_camera = QtCore.QTimer()
        self.cap = cv2.VideoCapture()
        self.CAM_NUM = 0
        self.set_ui()
        self.slot_init()
        self.__flag_work = 0
        self.x =0
        self.count = 0

    def set_ui(self):

        self.__layout_main = QtWidgets.QHBoxLayout()
        self.__layout_fun_button = QtWidgets.QVBoxLayout()
        self.__layout_data_show = QtWidgets.QVBoxLayout()

        #按钮添加
        self.button_analyse_image = QtWidgets.QPushButton(u'开始分析图像')
        self.button_save_image = QtWidgets.QPushButton(u'保存图像')
        self.button_manual_model = QtWidgets.QPushButton(u'手动模式')
        self.button_stop_analyse = QtWidgets.QPushButton(u'停止分析')
        self.button_auto_model = QtWidgets.QPushButton(u'自动分析')
        self.button_open_camera = QtWidgets.QPushButton(u'打开相机')
        self.button_close = QtWidgets.QPushButton(u'退出')


        #最小高度
        self.button_analyse_image.setMinimumHeight(40)
        self.button_save_image.setMinimumHeight(40)
        self.button_manual_model.setMinimumHeight(40)
        self.button_stop_analyse.setMinimumHeight(40)
        self.button_auto_model.setMinimumHeight(40)
        self.button_open_camera.setMinimumHeight(40)
        self.button_close.setMinimumHeight(40)
        self.button_analyse_image.setMinimumHeight(40)

        self.button_close.move(100,1000)


        # 信息显示
        self.label_show_camera = QtWidgets.QLabel()
        self.label_move = QtWidgets.QLabel()
        self.label_move.setFixedSize(250, 250)
        self.label_show_cameras = QtWidgets.QLabel()




        # 窗口大小
        self.label_show_camera.setFixedSize(480, 320)
        #setFixedSize ()方法设置了窗口的固定大小,然后设置了窗口内控件的布局为垂直布局
        self.label_show_camera.setAutoFillBackground(False)


        #显示按钮
        self.__layout_fun_button.addWidget(self.button_analyse_image)
        self.__layout_fun_button.addWidget(self.button_save_image)
        self.__layout_fun_button.addWidget(self.button_manual_model)
        self.__layout_fun_button.addWidget(self.button_stop_analyse)
        self.__layout_fun_button.addWidget(self.button_auto_model)
        self.__layout_fun_button.addWidget(self.button_open_camera)
        self.__layout_fun_button.addWidget(self.button_close)
        self.__layout_fun_button.addWidget(self.label_move)


        self.__layout_main.addLayout(self.__layout_fun_button)
        self.__layout_main.addWidget(self.label_show_camera)

        self.setLayout(self.__layout_main)
        self.label_move.raise_()
        self.setWindowTitle(u'检测窗口')


    def slot_init(self):
        self.button_open_camera.clicked.connect(self.button_open_camera_click)
        self.timer_camera.timeout.connect(self.show_camera)
        self.button_close.clicked.connect(self.close)


    def button_open_camera_click(self):
        if self.timer_camera.isActive() == False:
            flag = self.cap.open(self.CAM_NUM)
            if flag == False:
                msg = QtWidgets.QMessageBox.warning(self, u"Warning", u"请检测相机与电脑是否连接正确", buttons=QtWidgets.QMessageBox.Ok,
                                                defaultButton=QtWidgets.QMessageBox.Ok)

            else:
                self.timer_camera.start(30)

                self.button_open_camera.setText(u'关闭相机')
        else:
            self.timer_camera.stop()
            self.cap.release()
            self.label_show_camera.clear()
            self.button_open_camera.setText(u'打开相机')


    def show_camera(self):
        flag, self.image = self.cap.read()
        show = cv2.resize(self.image, (480, 360))   #摄像头窗口大小
        show = cv2.cvtColor(show, cv2.COLOR_BGR2RGB)
        showImage = QtGui.QImage(show.data, show.shape[1], show.shape[0], QtGui.QImage.Format_RGB888)
        self.label_show_camera.setPixmap(QtGui.QPixmap.fromImage(showImage))



if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    ui = Ui_MainWindow()
    ui.show()
    sys.exit(app.exec_())

这一部分不知道怎么改,找不到可以替换的模块,达到可以调节在窗口的位置的目的。

  # 窗口大小
        self.label_show_camera.setFixedSize(480, 320)
        #setFixedSize ()方法设置了窗口的固定大小,然后设置了窗口内控件的布局为垂直布局
        self.label_show_camera.setAutoFillBackground(False)

没太懂你的需求