cv2imshow窗口固定到pyqt5
时间: 2023-09-08 22:10:21 浏览: 225
工具变量城市供应链创新试点数据(2007-2023年).xlsx
你可以使用Qt的QPixmap将cv2的图像转换为Qt可识别的图像格式,然后将其显示在PyQt5的窗口上。下面是一个简单的示例代码:
```python
import cv2
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import QApplication, QLabel, QWidget, QVBoxLayout
class VideoWidget(QWidget):
def __init__(self, parent=None):
super(VideoWidget, self).__init__(parent)
self.label = QLabel(self)
self.layout = QVBoxLayout()
self.layout.addWidget(self.label)
self.setLayout(self.layout)
def set_image(self, image):
qimage = QPixmap.fromImage(image)
self.label.setPixmap(qimage)
if __name__ == '__main__':
app = QApplication([])
video_widget = VideoWidget()
video_capture = cv2.VideoCapture(0)
while True:
ret, frame = video_capture.read()
if ret:
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
h, w, c = frame.shape
qimage = QPixmap.fromImage(QImage(frame, w, h, c * w, QImage.Format_RGB888))
video_widget.set_image(qimage)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
video_capture.release()
cv2.destroyAllWindows()
app.exit()
```
在这个例子中,我们创建了一个名为VideoWidget的QWidget子类,该类包含一个QLabel和一个QVBoxLayout。我们使用set_image方法在QLabel中显示图像。在主循环中,我们使用cv2.VideoCapture从相机中读取帧,并将其转换为Qt可识别的图像格式,然后使用set_image方法在QLabel中显示图像。
阅读全文