Руководство по 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 и новее, где снова включён устаревший стек камеры.
Начало работы
Для камер Pivariety выполните установку по шагам ниже.
Версия Picamera2 от Arducam почти не отличается от официальной, но из-за добавленного управления автофокусом устанавливается иначе.
Можно пользоваться и официальной документацией Raspberry Pi с примерами на GitHub, но разделы 2.1 и 2.2 в ней замените шагами ниже.
Список плат камер Pivariety:
Управление фокусом в 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": focus value} — ручная фокусировка, {"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:
