raspberrypi / picamera2

New libcamera based python library
BSD 2-Clause "Simplified" License
860 stars 181 forks source link

[HOW-TO] How to capture the correct photo resolution? #1021

Open yq3w opened 5 months ago

yq3w commented 5 months ago

I captured the picture into the buffer with this setting, and the photos I took were only 640X480. How do I set the resolution?

picam2 = Picamera2() picam2.still_configuration.size = (5472,3648) picam2.start() sleep(2) data_io = io.BytesIO()

picam2.switch_mode_and_capture_file("still", data_io, format='jpeg')

picam2.capture_file(data_io, format='jpeg')

davidplowman commented 5 months ago

Hi, there's some information about this in section 4.3 of the manual. In this case I think you just forgot the .main because you're setting the size of the main stream.

import time
from picamera2 import Picamera2

picam2 = Picamera2()
picam2.still_configuration.main.size = (5472, 3648)
picam2.start()
time.sleep(2)
data_io = io.BytesIO()
picam2.switch_mode_and_capture_file("still", data_io, format='jpeg')
yq3w commented 5 months ago

Yes, I used your method to capture images correctly on cm4, but after I redone the system on pi5, there was an error message (imx283): RuntimeError: Unrecognised raw format RGGB16_PISP_COMP1

davidplowman commented 5 months ago

I think you may have conflicting software versions. I recommend always updating libcamera and Picamera2 together using

sudo apt update
sudo apt full-upgrade

because the binary interface between them is not always stable. I would certainly strongly advise users never to update Picamera2 using pip unless they know that the Python bindings in their libcamera installation are compatible.

There has been a recent update, I think, which is why things may have changed and caused problems. But the advice is always the same. Uninstall any pip versions and update as above. Sorry for the trouble!