使用PiRGBArray()函数在Python中实现对树莓派摄像头图像进行滤波
发布时间:2024-01-13 07:53:32
要使用PiRGBArray()函数在树莓派上对摄像头图像进行滤波,需要先安装picamera库。以下是一个示例代码,实现了对摄像头图像进行模糊滤波的功能。
import picamera
import time
import cv2
from picamera.array import PiRGBArray
# 初始化摄像头
camera = picamera.PiCamera()
# 设置摄像头分辨率
camera.resolution = (640, 480)
# 创建RGB数组来保存图像
rgb_array = PiRGBArray(camera, size=(640, 480))
# 允许摄像头预热
time.sleep(0.1)
try:
# 捕获连续的帧
for frame in camera.capture_continuous(rgb_array, format="bgr", use_video_port=True):
# 将RGB数组转换为OpenCV的图像格式
image = frame.array
# 在图像上应用模糊滤波
blurred = cv2.GaussianBlur(image, (11, 11), 0)
# 显示滤波后的图像
cv2.imshow("Filtered Image", blurred)
# 按下q键退出循环
if cv2.waitKey(1) & 0xFF == ord("q"):
break
# 清空RGB数组,为下一帧做准备
rgb_array.truncate(0)
finally:
# 关闭摄像头
camera.close()
# 关闭所有打开的窗口
cv2.destroyAllWindows()
在这个例子中,首先使用picamera库来初始化和配置摄像头。然后,创建一个PiRGBArray对象,用于捕获连续的帧,并将它传递给capture_continuous()函数。在每一帧中,将RGB数组转换为OpenCV的图像格式,并在图像上应用高斯模糊滤波器。最后,使用cv2.imshow()函数显示滤波后的图像。按下"q"键退出程序。
这个例子只是一个简单的示范,你可以根据需要修改滤波器的类型和参数,以适应你的应用场景。
