Hi,
I've just started working on the StereoPi, which I want to use as double (still) camera setup on a Raspberry basis.
Working on my Python scripts from other Raspberries, I found one important limitation by the maximum resolution originating probably from the camera drivers. It seems that the resolution of a two-camera-setup capture seems somewhat still limited by the resolution of one camera, i.e. for double V1 Raspi camera modules to somewhat 2592x1944 px.
Obviously, it would be useful to get a capture with a width of 2x2592. Is there any way to get such a modification?
I guess that that limitation is somehow set within the camera drivers, isn't it?
Any advice is warmly welcome!
Thanks in advance
Set max resolution
- Realizator
- Site Admin
- Posts: 906
- Joined: Tue Apr 16, 2019 9:23 am
- Contact:
Re: Set max resolution
Hi Pascalfust,
Actually you can get one image with the full resolution for both sensors. For V1 (5Mpix) you'll get 10 Mpix photo. We use this, for example, in our SLP image for taking a photo. In my article "The art of stereoscopic photo, Part 2" you can find section "Now let’s check how the ‘Camera’ mode works.", and find an example of such a photo.
Both raspistill and Python PiCamera sits on the same camera API, so this should work.
Can you please try to capture full-res stereoscopic image with Python and write your result here?
Actually you can get one image with the full resolution for both sensors. For V1 (5Mpix) you'll get 10 Mpix photo. We use this, for example, in our SLP image for taking a photo. In my article "The art of stereoscopic photo, Part 2" you can find section "Now let’s check how the ‘Camera’ mode works.", and find an example of such a photo.
Both raspistill and Python PiCamera sits on the same camera API, so this should work.
Can you please try to capture full-res stereoscopic image with Python and write your result here?
Eugene a.k.a. Realizator
-
- Posts: 9
- Joined: Fri Jan 31, 2020 6:28 am
Re: Set max resolution
Hi Eugene,
thanks for your prompt reply. I tried raspistill (e.g. raspistill -3d sbs -o "test.jpg" -w 5200) which works perfectly, however when it comes to Python, it blocks any attempt of increasing the width above the standard resolution Maybe I am missing some specific tweak, but it seems as if it wouldn't work via the Picamera module.
Anybody can give a hint?
thanks for your prompt reply. I tried raspistill (e.g. raspistill -3d sbs -o "test.jpg" -w 5200) which works perfectly, however when it comes to Python, it blocks any attempt of increasing the width above the standard resolution Maybe I am missing some specific tweak, but it seems as if it wouldn't work via the Picamera module.
Anybody can give a hint?
- Realizator
- Site Admin
- Posts: 906
- Joined: Tue Apr 16, 2019 9:23 am
- Contact:
Re: Set max resolution
Pascalfust, I confirm this problem. Looks like PiCamera has internal image size limits, and is not taking into account, that we need stereoscopic one (with the twice more width).
I've opened an issue at Github concerning this bug.
But raspistill can capture full resolution stereoscopic images. That is "raspistill -3d sbs -w 5184 -4 1952 -o photo.jpg" works fine.
So if you need to have a solution for taking a full-resolution photos from the Python right now, I can suggest you to run "raspistill" application from Python with appropriate options. There are lot of ways to run shell commands from Python (here, for example). You can pass a parameters like file name for saving. If it works for you?
I've opened an issue at Github concerning this bug.
But raspistill can capture full resolution stereoscopic images. That is "raspistill -3d sbs -w 5184 -4 1952 -o photo.jpg" works fine.
So if you need to have a solution for taking a full-resolution photos from the Python right now, I can suggest you to run "raspistill" application from Python with appropriate options. There are lot of ways to run shell commands from Python (here, for example). You can pass a parameters like file name for saving. If it works for you?
Eugene a.k.a. Realizator
-
- Posts: 9
- Joined: Fri Jan 31, 2020 6:28 am
Re: Set max resolution
Realizator, thank you for your feedback.
Unfortunately, the application of running "raspistill" applications by shell commands will not satisfy our requirements in terms of photo interval. As our intention is to use the StereoPi on a "fast" moving vehicle, we need minimum frame rates around 1 fps.
This, however, is barely achievable via the (slow) "raspistill" function that obviously opens and closes the connection after each frame.
While such a frame rate might be possible through Python, using the capture_continuous, there might exist an alternative solution based on C++ or S.L.P. Could you advise on this?
Unfortunately, the application of running "raspistill" applications by shell commands will not satisfy our requirements in terms of photo interval. As our intention is to use the StereoPi on a "fast" moving vehicle, we need minimum frame rates around 1 fps.
This, however, is barely achievable via the (slow) "raspistill" function that obviously opens and closes the connection after each frame.
While such a frame rate might be possible through Python, using the capture_continuous, there might exist an alternative solution based on C++ or S.L.P. Could you advise on this?
- Realizator
- Site Admin
- Posts: 906
- Joined: Tue Apr 16, 2019 9:23 am
- Contact:
Re: Set max resolution
Pascalfast, we have a discussion with 6by9 at Github (he is one of the hardware and software gurus from RPi team) in my issue I mentioned in a last post. I will try his advice tomorrow, and may be we'll be able to capture this directly from Python.
If this will not work, we'll find another way (like SLP or C++ based approaches you mentioned). Please give me one more day for the tests
If this will not work, we'll find another way (like SLP or C++ based approaches you mentioned). Please give me one more day for the tests
Eugene a.k.a. Realizator
- Realizator
- Site Admin
- Posts: 906
- Joined: Tue Apr 16, 2019 9:23 am
- Contact:
Re: Set max resolution
Pascalfast, I have a temporarily solution at this moment. Set "stereo_decimate = True", and resolution 2592x1936. In this case you got image with horizontal scale by 0.5 You can scale it horizontally twice to get full-resolution image. I will dig further to find another solutions for you.
Eugene a.k.a. Realizator
- Realizator
- Site Admin
- Posts: 906
- Joined: Tue Apr 16, 2019 9:23 am
- Contact:
Re: Set max resolution
Ok, it works now.
1. Open config.txt file from /BOOT partition and increase number of GPU memory:
It's strange, but raspistill works with the smaller number of GPU_MEM, and PiCamera needs more.
2. To fix an error from your screenshot, you need to do some changes in this file:
You need root level to edit it, so I just run:
to open editor with the super user privileges.
Go to the row 2271, mentioned in your error, and add '*2' at the end of expression. So you have:
Do not forget to set "stereo_decimate=False" in your PiCamera settings.
I've attached both files (edited camera.py and my test Python code I used to capture image). Could you please check, if it works for you?
1. Open config.txt file from /BOOT partition and increase number of GPU memory:
Code: Select all
gpu_mem=256
2. To fix an error from your screenshot, you need to do some changes in this file:
Code: Select all
/usr/lib/python3/dist-packages/picamera/camera.py
Code: Select all
sudo thonny
Go to the row 2271, mentioned in your error, and add '*2' at the end of expression. So you have:
Code: Select all
(0 < value.width <= self.MAX_RESOLUTION.width*2) and
I've attached both files (edited camera.py and my test Python code I used to capture image). Could you please check, if it works for you?
- Attachments
-
- camera_py_fullres.zip
- camera.py and test capture code
- (37.4 KiB) Downloaded 1370 times
Eugene a.k.a. Realizator
-
- Posts: 9
- Joined: Fri Jan 31, 2020 6:28 am
Re: Set max resolution
Works as a charm like this... thanks for digging into that !!
- Realizator
- Site Admin
- Posts: 906
- Joined: Tue Apr 16, 2019 9:23 am
- Contact:
Re: Set max resolution
Cool!
Can you please share some more details about your project? Or it is under NDA?..
Can you please share some more details about your project? Or it is under NDA?..
Eugene a.k.a. Realizator
-
- Posts: 6
- Joined: Wed Jul 01, 2020 1:16 pm
Re: Set max resolution
I am working on a project with similar goals in terms of image collection: I would like to take full-resolution stereo images with the stereopi using two V2 camera modules.
I followed the instructions in this thread to take full resolution images with piCamera, however when I tried running the script 1_tmp.py in a raspian desktop environment, the raspberry pi appeared to crash and reboot several times, and no image was saved. I tried disabling the desktop environment and when I ran the 1_tmp.py script, there was no reboot, but it generated no output in the terminal and did not save an image.
I'm using a 8Gb Compute module 3+ for reference.
Eugene - is there anything that I am doing wrong or different from how you achieved full resolution through picamera?
I followed the instructions in this thread to take full resolution images with piCamera, however when I tried running the script 1_tmp.py in a raspian desktop environment, the raspberry pi appeared to crash and reboot several times, and no image was saved. I tried disabling the desktop environment and when I ran the 1_tmp.py script, there was no reboot, but it generated no output in the terminal and did not save an image.
I'm using a 8Gb Compute module 3+ for reference.
Eugene - is there anything that I am doing wrong or different from how you achieved full resolution through picamera?
-
- Posts: 9
- Joined: Fri Jan 31, 2020 6:28 am
Re: Set max resolution
jlurban: What power supply are you using ? Via the USB or the pins? Do you encounter the same problem at lower resolution?
-
- Posts: 6
- Joined: Wed Jul 01, 2020 1:16 pm
Re: Set max resolution
pascalfust: I am using the pins for power. I was able to successfully collect images in the stereopi-tutorial and was able to set the re-scale factor to 1. (the default in the 0.5).
- Realizator
- Site Admin
- Posts: 906
- Joined: Tue Apr 16, 2019 9:23 am
- Contact:
Re: Set max resolution
Hi Jlurban!
You see, the full-resolution video capture is extremely consuming task. You should try either use a photo capture for the full resolution, or, for example, set a very small FPS. Can you please share a piece of code you use for the camera settings?
Pascalfaust asked a good question. What kind of a power source you are using?
Also running 1_test.py without a GUI is a good idea, on ly if you disable all the code, responsible for the image show.
UPD> Ohm wait! My fault! You're using my simple 1_tmp.py from the attached archive!
Could you please answer some questions:
1. Did you modify your camera.py, or put my attached version? It is better to modify your file, as the latest camera.py might have some difference with the old version I used.
2. Can you please confirm, that after your modification of the "camera.py" you other PiCamera-related scripts (like 1_test.py) works fine? I mean, if PiCamera continue to work correctly after your modification?
3. Are you working with one of our OpenCV images, or you are using a fresh Raspberry OS and just put OpenCV code on it?
You see, the full-resolution video capture is extremely consuming task. You should try either use a photo capture for the full resolution, or, for example, set a very small FPS. Can you please share a piece of code you use for the camera settings?
Pascalfaust asked a good question. What kind of a power source you are using?
Also running 1_test.py without a GUI is a good idea, on ly if you disable all the code, responsible for the image show.
UPD> Ohm wait! My fault! You're using my simple 1_tmp.py from the attached archive!
Could you please answer some questions:
1. Did you modify your camera.py, or put my attached version? It is better to modify your file, as the latest camera.py might have some difference with the old version I used.
2. Can you please confirm, that after your modification of the "camera.py" you other PiCamera-related scripts (like 1_test.py) works fine? I mean, if PiCamera continue to work correctly after your modification?
3. Are you working with one of our OpenCV images, or you are using a fresh Raspberry OS and just put OpenCV code on it?
Eugene a.k.a. Realizator
-
- Posts: 6
- Joined: Wed Jul 01, 2020 1:16 pm
Re: Set max resolution
Hi Eugene,
Right now I am using the 1_tmp.py script that you provided earlier in this thread without any modifications.
I also changed the settings in the `/boot/config.txt` file and the `/usr/..../picamera.py` file.
A small FPS is perfectly acceptable and photo capture would be preferred. Ideally I could get a full-resolution raw image stereo pair.
In terms of a power source I am using the pins powered through a USB power cable plugged into a powered Computer Dock and USB hub for my laptop. If you suggest another way please let me know.
I'll try disabling all GUI and imshow features and see if that helps.
Right now I am using the 1_tmp.py script that you provided earlier in this thread without any modifications.
I also changed the settings in the `/boot/config.txt` file and the `/usr/..../picamera.py` file.
A small FPS is perfectly acceptable and photo capture would be preferred. Ideally I could get a full-resolution raw image stereo pair.
In terms of a power source I am using the pins powered through a USB power cable plugged into a powered Computer Dock and USB hub for my laptop. If you suggest another way please let me know.
I'll try disabling all GUI and imshow features and see if that helps.
- Realizator
- Site Admin
- Posts: 906
- Joined: Tue Apr 16, 2019 9:23 am
- Contact:
Re: Set max resolution
Jlurban, I put an update to my previous answer. Please take a look
UPD> As for your power source - please try to provide power from the dedicated power adaptor, like a phone or tablet charger, able to provide at least 2A current.
UPD> As for your power source - please try to provide power from the dedicated power adaptor, like a phone or tablet charger, able to provide at least 2A current.
Eugene a.k.a. Realizator
-
- Posts: 9
- Joined: Fri Jan 31, 2020 6:28 am
Re: Set max resolution
The USB ports offen lack power, sometimes limiting to 2 amps. The stereopi, however, might ask for mor than that
- Realizator
- Site Admin
- Posts: 906
- Joined: Tue Apr 16, 2019 9:23 am
- Contact:
Re: Set max resolution
Actually, USB 2.0 is limited by 0.5A (500 mA). But I agree, to catch up that problem we need at least to exclude the power issue.pascalfust wrote: ↑Wed Jul 01, 2020 4:30 pmThe USB ports offen lack power, sometimes limiting to 2 amps. The stereopi, however, might ask for mor than that
Eugene a.k.a. Realizator
-
- Posts: 6
- Joined: Wed Jul 01, 2020 1:16 pm
Re: Set max resolution
Switching to a 2A power supply fixed it! Thank you Eugene and Pascalfust for the quick responses!
- I modified my picamera.py adding the `*1`
- 1_test.py works
- I'm using a fresh Raspberry OS and OpenCV installed on it
- Realizator
- Site Admin
- Posts: 906
- Joined: Tue Apr 16, 2019 9:23 am
- Contact: