python 实时调取摄像头的示例代码

  

Python 实时调取摄像头的示例代码攻略

1. 安装 OpenCV 库

使用 Python 调用摄像头需要使用OpenCV库。我们可以使用pip来安装它:

pip install opencv-python

2. 打开摄像头并捕捉视频

使用 OpenCV 库打开摄像头并捕捉视频。下面是一个示例代码:

import cv2

# 打开与默认相机连接的视频流
cap = cv2.VideoCapture(0)

while True:
    # 读取视频流的一帧
    ret, frame = cap.read()

    # 将一帧的像素值翻转,实现镜像效果
    frame = cv2.flip(frame, 1)

    # 展示当前帧
    cv2.imshow('frame', frame)

    # 每 1ms 检查键盘,如果按下 esc 键则退出循环
    if cv2.waitKey(1) == 27:
        break

# 释放摄像头
cap.release()

# 关闭所有窗口
cv2.destroyAllWindows()

3. 使用 pyqt5 呈现视频

可以使用 pyqt5 创建 GUI 界面来呈现摄像头的视频。下面是一个示例代码:

import sys
import cv2
from PyQt5.QtGui import QImage, QPixmap
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QWidget, QLabel


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

        # 创建标签来显示视频帧
        self.label = QLabel()

        # 设置标签的大小策略
        self.label.setScaledContents(True)

        # 创建一个垂直布局,加入标签
        layout = QVBoxLayout()
        layout.addWidget(self.label)

        # 设置窗口的布局为垂直布局
        self.setLayout(layout)

        # 打开与默认相机连接的视频流
        self.cap = cv2.VideoCapture(0)

        # 创建计时器,在每个时间间隔更新视频帧
        self.timer = QTimer()
        self.timer.timeout.connect(self.update_frame)

        # 开始计时器
        self.timer.start(20)

    def update_frame(self):
        # 读取一帧的视频
        ret, frame = self.cap.read()

        # 将 BGR 格式视频帧转换为 RGB 格式
        rgb_image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

        # 将 RGB 图像转换为 QImage
        h, w, ch = rgb_image.shape
        bytes_per_line = ch * w
        qt_image = QImage(rgb_image.data, w, h, bytes_per_line, QImage.Format_RGB888)

        # 将 QImage 转换为 QPixmap
        pixmap = QPixmap.fromImage(qt_image)

        # 在标签中显示 QPixmap
        self.label.setPixmap(pixmap)

    def keyPressEvent(self, event):
        # 如果按下 ESC 键,关闭窗口并释放摄像头资源
        if event.key() == Qt.Key_Escape:
            self.cap.release()
            self.timer.stop()
            self.close()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    player = VideoPlayer()
    player.show()
    sys.exit(app.exec_())

以上两个代码示例可以帮助你了解 Python 通过 OpenCV 库打开摄像头实时捕捉视频,并使用 pyqt5 呈现视频的过程。可以根据实际需要灵活运用。

相关文章