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

运用Picamera.array库中的PiRGBArray()函数实现树莓派摄像头图像的亮度和对比度调整

发布时间:2024-01-13 07:55:18

要使用Picamera.array库中的PiRGBArray()函数实现树莓派摄像头图像的亮度和对比度调整,首先需要安装picamera库。

安装picamera库:

1. 打开终端

2. 输入以下命令安装picamera库:

sudo apt-get install python3-picamera

接下来,我们将编写一个示例代码来演示亮度和对比度的调整。

import picamera
import picamera.array
import numpy as np

# 设置摄像头分辨率
WIDTH = 640
HEIGHT = 480

# 亮度和对比度的调整值
BRIGHTNESS = 50  # 此值范围为-100到100,0表示保持原始亮度
CONTRAST = 50  # 此值范围为-100到100,0表示保持原始对比度

# 初始化摄像头
camera = picamera.PiCamera()

# 设置摄像头参数
camera.resolution = (WIDTH, HEIGHT)
camera.framerate = 30

# 创建一个用于获取摄像头帧的数组
rawCapture = picamera.array.PiRGBArray(camera, size=(WIDTH, HEIGHT))

# 循环捕获帧并处理
for frame in camera.capture_continuous(rawCapture, format="rgb", use_video_port=True):
    # 获取原始帧
    image = frame.array

    # 调整亮度和对比度
    image = np.int16(image)
    image = image * (CONTRAST / 50 + 1) - (BRIGHTNESS * 255 / 100)
    image = np.clip(image, 0, 255)
    image = np.uint8(image)

    # 显示图像
    cv2.imshow("Image", image)

    # 检测按键,按下"q"键退出循环
    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

    # 清除摄像头捕获的帧,准备下一次捕获
    rawCapture.truncate(0)

# 关闭摄像头
camera.close()

# 关闭窗口
cv2.destroyAllWindows()

以上代码实现了树莓派摄像头的亮度和对比度调整。在代码中,我们首先设置了摄像头的分辨率和帧率。然后,使用PiRGBArray()函数创建了一个用于获取摄像头帧的数组。接下来,我们通过循环捕获连续的帧,并在每一帧中调整亮度和对比度。最后,显示处理后的图像,并在按下"q"键时退出循环。

在调整亮度和对比度时,我们将帧转换为整数数组,并根据给定的亮度和对比度参数进行调整。然后,我们通过使用clip()函数将像素值限制在0到255之间,并将数组转换回无符号整数。

请注意,代码中使用了OpenCV的imshow()和waitKey()函数来显示图像和检测按键。因此,在运行代码之前,你需要安装OpenCV库。可以使用以下命令来安装OpenCV库:

sudo apt-get install python3-opencv

以上就是使用Picamera.array库中的PiRGBArray()函数实现树莓派摄像头图像亮度和对比度调整的示例代码。希望对你有帮助!