欢迎访问宙启技术站
智能推送

Python中通过PiRGBArray()函数实现树莓派摄像头图像的实时显示

发布时间:2024-01-13 07:52:22

在Python中,可以使用PiCamera库来控制树莓派摄像头,并在实时显示图像时使用PiRGBArray()函数。PiRGBArray()函数可以用来创建一个用于存储相机捕获图像的numpy数组。

首先,我们需要安装PiCamera库。可以使用以下命令在树莓派上安装:

sudo apt-get install python3-picamera

安装完成后,我们可以使用以下代码来实现树莓派摄像头的实时显示:

import time
import cv2
from picamera import PiCamera
from picamera.array import PiRGBArray

# 初始化摄像头
camera = PiCamera()
camera.resolution = (640, 480)
camera.framerate = 32

# 初始化显示窗口
cv2.namedWindow("Camera", cv2.WINDOW_NORMAL)

# 创建一个用于存储图像的numpy数组
rawCapture = PiRGBArray(camera, size=(640, 480))

# 等待相机启动
time.sleep(0.1)

# 开始循环捕获图像
for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True):
    # 从numpy数组中获取图像
    image = frame.array

    # 在窗口中显示图像
    cv2.imshow("Camera", image)
    
    # 检测按键,如果按下“q”键,退出循环
    key = cv2.waitKey(1) & 0xFF
    if key == ord("q"):
        break
    
    # 清空numpy数组,准备下一次捕获
    rawCapture.truncate(0)

# 关闭显示窗口
cv2.destroyAllWindows()

上述代码首先导入了所需的库。然后,我们初始化了PiCamera对象,并设置了摄像头的分辨率和帧率。接下来,我们创建了一个用于存储图像的numpy数组,这个数组的大小与摄像头分辨率相同。

在主循环中,我们使用PiRGBArray对象的capture_continuous()方法从摄像头捕获图像。通过调用frame.array来获取numpy数组中的图像数据。然后,我们使用cv2.imshow()函数在窗口中显示图像。在窗口中显示图像后,我们使用cv2.waitKey()函数检测用户是否按下了“q”键。如果按下了“q”键,我们就退出循环。

最后,我们通过调用rawCapture.truncate(0)来清空numpy数组,以准备下一次的图像捕获。

以上就是使用PiRGBArray()函数实现树莓派摄像头图像的实时显示的一个例子。用户只需要运行这段代码,就可以实时显示树莓派摄像头的图像。