有一个 640x480的Label,一开始放置一张图片,点击打开监控按钮后显示监控内容,点击关闭按钮后label显示原始图片
时间: 2023-12-03 14:45:24 浏览: 83
你可以使用PyQt或者Tkinter这样的Python GUI库来实现。
首先,你需要在GUI界面中添加一个Label和两个Button,一个用于打开监控,一个用于关闭监控。
然后,你需要定义两个函数,一个用于显示监控内容,一个用于显示原始图片。具体实现可以参考下面的代码:
```python
import cv2
from PyQt5.QtGui import QImage, QPixmap
from PyQt5.QtWidgets import QLabel, QPushButton, QWidget, QVBoxLayout
class MyWidget(QWidget):
def __init__(self):
super().__init__()
# 创建Label和Button
self.label = QLabel(self)
self.label.setFixedSize(640, 480)
self.button_open = QPushButton('打开监控', self)
self.button_close = QPushButton('关闭监控', self)
# 设置布局
layout = QVBoxLayout()
layout.addWidget(self.label)
layout.addWidget(self.button_open)
layout.addWidget(self.button_close)
self.setLayout(layout)
# 连接信号和槽
self.button_open.clicked.connect(self.show_monitor)
self.button_close.clicked.connect(self.show_original)
# 加载原始图片
self.image = cv2.imread('original.jpg')
self.show_image(self.image)
def show_monitor(self):
# 加载监控视频
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
if ret:
# 显示监控视频
self.show_image(frame)
else:
break
# 释放资源
cap.release()
def show_original(self):
# 显示原始图片
self.show_image(self.image)
def show_image(self, image):
# 将OpenCV图像转换成Qt图像
qimage = QImage(image.data, image.shape[1], image.shape[0], QImage.Format_RGB888)
pixmap = QPixmap(qimage)
# 显示图像
self.label.setPixmap(pixmap)
```
在上面的代码中,我们使用OpenCV库来获取监控视频,并将它显示在Label上。当我们点击关闭按钮时,我们只需要将原始图片显示在Label上即可。注意,我们在show_image函数中将OpenCV图像转换成了Qt图像,并将它显示在了Label上。
阅读全文