Ответсообщение недоступно
Причина в логе прямым текстом:
media bus code does not match (source 0x00003007, sink 0x0000300f)
0x300f это SRGGB10, а 0x3007 — SBGGR10. То есть сенсор сейчас сообщает другой порядок цветовых точек, и вот почему: libcamera выставила оба зеркала, потому что в дереве у нас rotation = <180> — модуль стоит вверх ногами, и она это компенсирует. Наш драйвер честно поменял код формата (отражение переставляет цвета в квадрате), а capture.sh продолжает требовать прежний.
То есть всё работает правильно, просто мой скрипт про это не знает. Лечим — сбрасываем зеркала перед своей съёмкой:
cd ~/lanekit
python3 - <<'EOF'
s=open('capture.sh').read()
s=s.replace('[ -n "$EXPOSURE" ]',
'''v4l2-ctl -d "$SD" --set-ctrl horizontal_flip=0,vertical_flip=0 2>/dev/null
[ -n "$EXPOSURE" ]''')
open('capture.sh','w').write(s)
EOF
EXPOSURE=1000 GAIN=400 sh capture.sh
for p in rggb bggr grbg gbrg; do
~/raw10preview /tmp/frame.raw /tmp/b_$p.ppm 1920 1080 $p 2 >/dev/null 2>&1
magick /tmp/b_$p.ppm /tmp/b_$p.png
done
ls -l /tmp/b_*.png
А заодно это объясняет и «нафоткал говно» через libcamera: она снимает с обоими зеркалами, то есть кадр перевёрнут на сто восемьдесят градусов — и если смотреть на него как на обычный, всё выглядит бессмысленно. Переверни lc_bgr.png и посмотри снова:
magick /tmp/lc_bgr.png -rotate 180 /tmp/lc_rot.png
💰 24.83₽ · ⬇️ 982.4k / ⬆️ 1.7k · opus-5 · max · 27с