ã©ãºãã€(Raspberry Pi)ã®Picamera2ã§ã«ã¡ã©ãäœ¿ãæ¹æ³

ã©ãºãã€ã§Pythonããã©ãºãã€ã«ã¡ã©äœ¿ãã®ã«äžèŠåŽ
Raspberry Piçšé«è§£å床ãªãŒããã©ãŒã«ã¹ã«ã¡ã©ã¢ãžã¥ãŒã«è²·ã£ãã®ã§ãä¹ ãã¶ãã«ã©ãºãã€ã§ã«ã¡ã©äœ¿ã£ãŠã¿ãããšæã£ããè²ã 倧å€ã ã£ãã®ã§ã¡ã¢ã§ãã
æ®éã®ã©ãºãã€ã«ã¡ã©ã¢ãžã¥ãŒã«ã®ã±ãŒã¹ãèšèŒããŠãããŸãã
åææ¡ä»¶
- Raspberry Pi 4
- Raspberry Pi OS(64-bit) with Desktop 2022-01-28(Bullseye)
- Raspberry Piã«ã¡ã©ã¢ãžã¥ãŒã«v2
- Raspberry Piçšé«è§£å床ãªãŒããã©ãŒã«ã¹ã«ã¡ã©ã¢ãžã¥ãŒã«
ã«ã¡ã©ã®æçã®åããæ¹
ææ°ã®Raspberry Pi OSïŒDebian BullseyeïŒããã«ã¡ã©åšãè²ã å€ãã£ãŠããã®ãåå ã§ããã
éåžžã®Raspberry Piã«ã¡ã©ã¢ãžã¥ãŒã«v2ã§ããã°ãããã©ã«ãã®ç¶æ ã§ã以äžã³ãã³ãã ãã§åäœç¢ºèªã§ããŸããã
$ libcamera-hello
Raspberry Piçšé«è§£å床ãªãŒããã©ãŒã«ã¹ã«ã¡ã©ã¢ãžã¥ãŒã«ã®åããæ¹
éåžžã®Raspberry Piã«ã¡ã©ã¢ãžã¥ãŒã«v2ã䜿ãå Žåã¯ããã¯é£ã°ããŠãã ããïŒå®è¡ãããšåããªããªããŸãïŒã
Raspberry Piçšé«è§£å床ãªãŒããã©ãŒã«ã¹ã«ã¡ã©ã¢ãžã¥ãŒã«ã¯ã以äžã®ãµã€ããåèã«ã»ããã¢ãããå¿ èŠã§ãã
å ·äœçã«ã¯ä»¥äžã³ãã³ãå®è¡ããŠãåèµ·åããŸãã
$ 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
$ ./install_pivariety_pkgs.sh -p imx519_kernel_driver
libcamera-helloã³ãã³ãã§ã«ã¡ã©ãæ ãã°OKã§ãã
Picamera2ã§ã®åããæ¹
Picamera2ã»ããã¢ãã
以äžã®aptã³ãã³ãäžçºã§ã€ã³ã¹ããŒã«ã§ããŸãã
$ sudo apt install -y python3-picamera2
Picamera2ã»ããã¢ããïŒæ§ïŒ
泚ïŒä»¥äžã¯å€ãæ å ±ã§ãããåèãŸã§ã«æ®ããŠãããŸããä»ã¯äžèšã®éãã³ãã³ãäžçºã§ã€ã³ã¹ããŒã«å¯èœã§ãã
Pythonã§ã®å¶åŸ¡ã¯ã¡ãã£ãšå€§å€ã§ããåŸæ¥ã®PicameraããPicamera2ã«ã¢ããããŒãããŠããã®ã§Picamera2ãã»ããã¢ããããå¿ èŠããããŸãã
以äžå ¬åŒãµã€ãã®READMEã¯ãäžçŽè åãã§æé ãè²ã çç¥ãããŠããŸãã
以äžãµã€ããäžå¯§ã«ã»ããã¢ããæ¹æ³ã解説ããŠãã ãã£ãŠããŸããã
èªåã詊ããæããæçã»ããã¢ããã³ãã³ãã¯ä»¥äžã«ãªããšæããŸãããã«ããå¿ èŠãªã®ã§ãçµæ§åŸ ã¡æéããããŸãã
sudo apt install -y libboost-dev
sudo apt install -y libgnutls28-dev openssl libtiff5-dev
sudo apt install -y libfmt-dev libdrm-dev
sudo apt install -y python3-pyqt5
sudo apt install -y meson
sudo pip3 install opencv
sudo pip3 install pyyaml ply
sudo pip3 install pyopengl
cd
git clone --branch picamera2 https://github.com/raspberrypi/libcamera.git
cd libcamera
meson build -Dpycamera=enabled
ninja -C build -j 2
sudo ninja -C build install
cd
git clone https://github.com/tomba/kmsxx.git
cd kmsxx
git submodule update --init
meson build
ninja -C build -j 2
cd
git clone https://github.com/RaspberryPiFoundation/python-v4l2.git
cd
git clone https://github.com/raspberrypi/picamera2.git
ã³ãã³ããæã¡çµãã£ããã~/.bashrcã«ä»¥äžã®è¡ããšãã£ã¿ã§è¿œèšããŸãã
export PYTHONPATH=/home/pi/picamera2:/home/pi/libcamera/build/src/py:/home/pi/kmsxx/build/py:/home/pi/python-v4l2
ãšãã£ã¿ã®ä»£ããã«ä»¥äžã®ãããªã³ãã³ãã§ã远èšã§ãããšæããŸãã
$ sh -c "echo \"export PYTHONPATH=/home/pi/picamera2:/home/pi/libcamera/build/src/py:/home/pi/kmsxx/build/py:/home/pi/python-v4l2\" >> ~/.bashrc"
Picmaera2èªåã»ããã¢ããã³ãã³ã
Picamera2ã®ã»ããã¢ããäœæ¥ããŸãšããã¹ã¯ãªãããæºåããŸããã
以äžã³ãã³ãã§ã»ããã¢ãããã§ããŸãã
$ curl -s https://raw.githubusercontent.com/karaage0703/raspberry-pi-setup/master/setup-picamera2.sh | /bin/bash
åèµ·åããã°Picamera2ã䜿ããããã«ãªããŸãã
Picamera2åäœç¢ºèªïŒéæ¢ç»ïŒ
ã»ããã¢ããçµãã£ããã以äžã®ãããªã¹ã¯ãªãããäœæããŠå®è¡ããŸãããã
from picamera2.picamera2 import *
import time
picam2 = Picamera2()
picam2.start_preview(Preview.QTGL)
preview_config = picam2.preview_configuration()
capture_config = picam2.still_configuration()
picam2.configure(preview_config)
picam2.start()
time.sleep(5)
picam2.switch_mode_and_capture_file(capture_config, 'test.jpg')
å®è¡ãããtest.jpgãšãããã¡ã€ã«ãçæãããŸãã

~~ãã ããã³ãŒãâŠãã©ãŒã«ã¹åãããæ¹æ³ã¯ãŸãåãã£ãã远èšããŸãã~~远èšããŸããã
Picamera2åäœç¢ºèªïŒåç»ïŒ
OpenCVã§åç»è¡šç€ºãããããšãã®ãµã³ãã«ãœããã¯ä»¥äžãšãªããŸããå ¬åŒã®ãµã³ãã«ãªã©ãåèã«èªäœããŸããã
coding: utf-8
# raspi cam2 demo
import cv2
from picamera2 import Picamera2
from libcamera import controls
camera = Picamera2()
camera.configure(camera.create_preview_configuration(main={"format": 'XRGB8888', "size": (640, 480)}))
camera.start()
camera.set_controls({'AfMode': controls.AfModeEnum.Continuous})
count_max = 0
if __name__ == '__main__':
count = 0
while True:
img = camera.capture_array()
key = cv2.waitKey(1)
if key == 27: # when ESC key is pressed break
break
count += 1
if count > count_max:
cv2.imshow('View', img)
count = 0
camera.close()
cv2.destroyAllWindows()
æè»œã«è©Šãããå Žåã¯ã以äžã³ãã³ãå®è¡ããã°ãäžèšã¹ã¯ãªãããããŠã³ããŒãããŠå®è¡ããããšãã§ããŸãã
$ wget https://raw.githubusercontent.com/karaage0703/raspberry-pi-example/master/raspi_cam2_opencv.py
$ python3 raspi_cam2_opencv.py
ç»è§èšå®
è§£å床ã«ãã£ãŠç»è§ãå€ããã®ã§ãç»è§ãçããªãšæãããè§£å床ã調æŽããŸãããã以äžã®è¡šã®fullãšæžããŠããèšå®ãåºãç»è§èšå®ã§ãã
äŸãã°äžèšã®ãµã³ãã«ããã°ã©ã ã®è§£å床èšå®ã以äžã®ããã«å€ãããšç»è§ãåºããªããŸãã
camera.configure(camera.create_preview_configuration(main={"format": 'XRGB8888', "size": (1640, 1232)}))
ãã©ãŒã«ã¹ãåãããæ¹æ³
以äžã¯Raspberry Piçšé«è§£å床ãªãŒããã©ãŒã«ã¹ã«ã¡ã©ã¢ãžã¥ãŒã«ã®ããã®èª¿æŽã§ããæ®éã®ã©ãºãã€ã«ã¡ã©ã¢ãžã¥ãŒã«ã®ãã³ãã¯æäœæ¥ã§èª¿æŽããŸãïŒãã¡ãã®èšäºãªã©ãåèã«ãªããŸãïŒã
远èšïŒRaspberry Pi Camera Module 3ã§ããã°ããªãŒããã©ãŒã«ã¹æ©èœããããŸããäžèšã®ã¹ã¯ãªããã®camera.set_controls({'AfMode': controls.AfModeEnum.Continuous})ã§ãªãŒããã©ãŒã«ã¹ã®èšå®ãããŠããŸãã
ãã©ãŒã«ã¹èª¿æŽã«é¢ããŠã¯ã以äžã®èšäºãåèã«ããŸããã
ãã ããArduCAM/Arducam-Pivariety-V4L2-Driver.gitããã®ãŸãŸã§ã¯åããªãã®ã§Focus.pyã®defaultãdefault_valueã«æžãæããå¿
èŠããããŸããããã«é¢ããŠã¯ã以äžèšäºã倧å€åèã«ãªããŸããã
ä»åã¯ããããããç§ã®æ¹ã§æžãæããŠããããªããžããªã以äžã³ãã³ãã§cloneããŸãã
$ cd && git clone https://github.com/karaage0703/Arducam-Pivariety-V4L2-Driver
ããšã¯ããã¥ã¢ã«ã©ããã§ãããŸãã¯ã«ã¡ã©ã衚瀺ãç¶ããŸãã
$ ibcamera-still -t 0
ç¶ããŠããã©ãŒã«ã¹ã®èª¿æŽããŒã«ã§ãã©ãŒã«ã¹ã調æŽããŸãã
$ cd Arducam-Pivariety-V4L2-Driver/focus
$ python3 FocuserExample.py -d /dev/v4l-subdev1
調æŽã¯ä»¥äžã®ãããªç»é¢ã§ãç¢å°ã®Up/Downã§èŠãªãã調æŽããŸãã
0ã ãšä»¥äžã®ããã«ãã±ãŠããã®ã§èª¿æŽããŸãã

900ã«ãããšãã£ããããŸããã

ã»ãŒããããšãã¯ctrl + cãæŒããŸãããããªã»ãããããšãã¯rã§ãã
ã¹ã¯ãªãããèŠãæããv4l2ã§ã«ã¡ã©ãã³ã³ãããŒã«ããŠãããããªã®ã§ãä»ã«è²ã 調æŽãããå Žåã¯ã以äžèšäºãåèã«ãªãããã§ãã
ãŸãšã
ã©ãºãã€ã§ã«ã¡ã©äœ¿ãããã ããªã®ã«ããã£ã¡ã倧å€ã§ãããå 人ã®ç¥æµã«ãã£ã¡ãå©ããããŸããïŒåèãªã³ã¯ãšããŠèŒããŠããŸãïŒã
ãŸã éçºéäžã®éæž¡æãªã ãã§ããããpipã§Picamera2ã¯ç°¡åã«ã€ã³ã¹ããŒã«ã§ããããã«ãªããšæããŸãããã®ãšããŸã§ã®åèæ
å ±ãšããŠãããããã°å©çšãã ããã
aptã§æè»œã«ã€ã³ã¹ããŒã«ã§ããããã«ãªããŸããã®ã§èšäºä¿®æ£ããŸããã
åèãªã³ã¯
ãã©ãŒã«ã¹èª¿æŽ
é¢é£èšäº
倿Žå±¥æŽ
- 2023/03/29 picamera2ã®ã¢ããããŒãã«ãšããªãä¿®æ£
- 2022/11/07 ç»è§èšå®ã«é¢ããŠè¿œèš
- 2022/04/03 åç»ã®åçã«é¢ããŠè¿œèš
- 2022/03/30 æç« ãå°ä¿®æ£
- 2022/03/22 ãã©ãŒã«ã¹ã®èª¿æŽã«é¢ããŠè¿œèš
Discussion