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()函数实现树莓派摄像头图像的实时显示的一个例子。用户只需要运行这段代码,就可以实时显示树莓派摄像头的图像。
