ciltatarza, you wrote "I need to quality images so i set to use_video_port=False."
This is the key point here. In this mode (actually "still image mode"), GPU does A LOT of image improvements (like noise cancellation, color adjustments etc.). So this mode can't be used for the fast frames capture, even theoretically. Please try to use this in "use_video_port=False" mode.
If you are an experienced Python/CPP user, I can give you 3 points for consideration. I tested them all, and will implement one of these in our upcoming update of the Python code.
1. You can try to use threads to capture images in Python, as it helps to avoid waiting for the IO operations. This can increase FPS ~2-3 times. As a negative effect - your CPU will be loaded up to 100% for all 4 kernels. The explanation can be found
here.
I attached an example of the code I used to play with (FPS_test_basic.py.zip). You can try to change the resolution and see the result.
2. You can try to use "np.frombuffer" feature in Python. It will create frames in memory, without copying/modifying them. Also, you can use YUV colorspace, and take Y (Intensity) only - i.e. 3 times smaller amount of data. I.e. in this case camera provide you a color image in the memory, but you are using the grayscale part only. This is the approach I will use in our scripts. Take a look at the explanation and a code example (the second code in the first answer)
here. JFYI, the author of this answer is actually an author of the PiCamera python library.
3. C++ and the most efficient way. In addition to the raspivid, we have raspividyuv utility. It has one extremely useful parameter, "--luma" or "-l". If you use it, raspividyuv will give you ONLY the Y parameter (i.e. grayscale image). It means IO process will not use the bandwidth, needed to push a full color image.
So you can use this utility and pass all frames to your processing part over a pipe. We used exactly this trick in
our article about C++/Python speed comparison.
Which approach looks more interesting to you?
p.s. raspividyuv got the stereoscopis support just a few months ago. please use the latest firmware/kernel to get stereoscopic image from raspividyuv