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

2023-12-16Python编程
164

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 呈现视频的过程。可以根据实际需要灵活运用。

The End

相关推荐

解析Python中的eval()、exec()及其相关函数
Python中有三个内置函数eval()、exec()和compile()来执行动态代码。这些函数能够从字符串参数中读取Python代码并在运行时执行该代码。但是,使用这些函数时必须小心,因为它们的不当使用可能会导致安全漏洞。...
2023-12-18 Python编程
117

Python下载网络文本数据到本地内存的四种实现方法示例
在Python中,下载网络文本数据到本地内存是常见的操作之一。本文将介绍四种常见的下载网络文本数据到本地内存的实现方法,并提供示例说明。...
2023-12-18 Python编程
101

Python 二进制字节流数据的读取操作(bytes与bitstring)
来给你详细讲解下Python 二进制字节流数据的读取操作(bytes与bitstring)。...
2023-12-18 Python编程
120

Python3.0与2.X版本的区别实例分析
Python 3.x 是 Python 2.x 的下一个重大版本,其中有一些值得注意的区别。 Python 3.0中包含了许多不兼容的变化,这意味着在迁移到3.0之前,必须进行代码更改和测试。本文将介绍主要的差异,并给出一些实例来说明不同点。...
2023-12-18 Python编程
34

python如何在终端里面显示一张图片
要在终端里显示图片,需要使用一些Python库。其中一种流行的库是Pillow,它有一个子库PIL.Image可以加载和处理图像文件。要在终端中显示图像,可以使用如下的步骤:...
2023-12-18 Python编程
91

Python图像处理实现两幅图像合成一幅图像的方法【测试可用】
在Python中,我们可以使用Pillow库来进行图像处理。具体实现两幅图像合成一幅图像的方法如下:...
2023-12-18 Python编程
103