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

利用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()函数,我们可以方便地对树莓派摄像头的图像进行裁剪和旋转操作,实现更多有趣的图像处理功能。