Руководство по Picamera2
Введение
Picamera2 — замена Picamera на основе libcamera. Picamera была Python-интерфейсом к устаревшему стеку камеры Raspberry Pi. Picamera2 тоже предоставляет простой API на Python.
В Arducam добавили в исходную библиотеку управление автофокусом.
Picamera2 поддерживается только в образах Raspberry Pi OS Bullseye и новее, как 32-, так и 64-битных. С сентября 2022 года Picamera2 предустановлена в образах, которые скачиваются с сайта Raspberry Pi. Библиотека работает на всех платах Raspberry Pi вплоть до Pi Zero, хотя на менее мощных устройствах производительность в некоторых задачах может быть ниже.
Picamera2 не поддерживается:- в образах на основе Buster и более ранних выпусков;
- в образах Raspberry Pi OS Legacy;
- в образах Bullseye и новее, где снова включён устаревший стек камеры.
Начало работы
| Разрешение | Сенсор |
|---|---|
| 5 Мп | OV5647 |
| 8 Мп | IMX219 |
| 12 Мп | IMX477 |
| 12 Мп | 477M |
| 12 Мп | IMX708 |
| 12 Мп | IMX378 |
| 16 Мп | IMX519 |
| 64 Мп | 64MP Hawkeye |
| 64 Мп | 64MP OV64A40 |
| 0,3 Мп | OV7251 |
| 1,58 Мп | IMX296 |
| 1 Мп | OV9281 |
| 2 Мп | OV2311 |
| 2 Мп | IMX290/IMX462/IMX327 |
Управление фокусом в PiCamera2
Шаг 1. Установите libcamera
Убедитесь, что установлена libcamera версии 0.0.10:
dpkg -l | grep libcamera

Если версия ниже 0.0.10, установите последнюю:
wget -O install_pivariety_pkgs.sh https://github.com/ArduCAM/Arducam-Pivariety-V4L2-Driver/releases/download/install_script/install_pivariety_pkgs.sh
chmod +x install_pivariety_pkgs.sh
./install_pivariety_pkgs.sh -p libcamera_dev
./install_pivariety_pkgs.sh -p libcamera_apps
Шаг 2. Установите зависимости Picamera2
sudo apt install -y python3-kms++
sudo apt install -y python3-pyqt5 python3-prctl libatlas-base-dev ffmpeg python3-pip
sudo pip3 install numpy --upgrade
sudo apt install picamera2 --upgrade
Шаг 3. Основы работы
picam2.set_controls: {"AfMode": 0, "LensPosition": значение_фокуса} — ручная фокусировка, {"AfMode": 1, "AfTrigger": 0} — однократный автофокус, {"AfMode": 2, "AfTrigger": 0} — непрерывный автофокус.#!/usr/bin/python3
import time
from picamera2 import Picamera2, Preview
picam2 = Picamera2()
picam2.start_preview(Preview.QTGL)
preview_config = picam2.create_preview_configuration()
picam2.configure(preview_config)
picam2.start()
time.sleep(1)
picam2.set_controls({"AfMode": 0, "LensPosition": 425})
# If your libcamera-dev version is 0.0.10, use the following code.
# AfMode Set the AF mode (manual, auto, continuous)
# For example, single focus: picam2.set_controls({"AfMode": 1 ,"AfTrigger": 0})
# continuous focus: picam2.set_controls({"AfMode": 2 ,"AfTrigger": 0})
time.sleep(5)
picam2.set_controls({"AfMode": 1 ,"AfTrigger": 0})

Режим фокусировки нужно задавать при каждой установке фокуса.

Диапазон LensPosition — от 0 до 15:
