利用Picamera.array库中的PiRGBArray()函数实现树莓派摄像头图像的裁剪和旋转
发布时间:2024-01-13 07:54:21
树莓派摄像头是一款非常常用的摄像头模块,可以与树莓派的GPIO接口进行连接,通过Picamera库可以方便地控制摄像头获取图像和视频。
Picamera库中的array模块提供了一个PiRGBArray()函数,可以实现对摄像头图像进行裁剪和旋转。下面是具体的使用例子。
首先,需要在树莓派上安装Picamera库。可以通过以下命令进行安装:
sudo apt-get update sudo apt-get install python3-picamera
安装完成后,可以在Python代码中导入Picamera和array模块,并初始化摄像头:
import picamera
import picamera.array
with picamera.PiCamera() as camera:
camera.resolution = (640, 480) # 设置摄像头分辨率
camera.start_preview() # 开始实时预览
camera.capture('image.jpg') # 拍摄一张照片并保存
camera.stop_preview() # 停止实时预览
以上代码会在树莓派上拍摄一张640x480分辨率的照片,并保存为'image.jpg'。
接下来,可以利用PiRGBArray()函数对图像进行裁剪和旋转。下面是一个例子,将图像裁剪为正方形并旋转90度:
import picamera
import picamera.array
import numpy as np
with picamera.PiCamera() as camera:
camera.resolution = (640, 480)
camera.start_preview()
with picamera.array.PiRGBArray(camera) as output:
camera.capture(output, 'rgb') # 以RGB格式获取图像数据
image = output.array
# 裁剪图像为正方形
min_dim = min(image.shape[0], image.shape[1])
start_x = int((image.shape[1] - min_dim) / 2)
start_y = int((image.shape[0] - min_dim) / 2)
end_x = start_x + min_dim
end_y = start_y + min_dim
image = image[start_y:end_y, start_x:end_x]
# 旋转图像90度
image = np.rot90(image)
# 显示图像
import matplotlib.pyplot as plt
plt.imshow(image)
plt.show()
camera.stop_preview()
以上代码会在树莓派上拍摄一张640x480分辨率的照片,并将图像裁剪为正方形并旋转90度,然后使用matplotlib库显示图像。
通过PiRGBArray()函数,我们可以方便地对树莓派摄像头的图像进行裁剪和旋转操作,实现更多有趣的图像处理功能。
