摄像头窗口被锁定,无法再添加保存图像的窗口,所有代码如下:
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)
没太懂你的需求