I am using two
Arducam 2MP Global Shutter USB OV2311 cameras. As I already have designed a very flexible synchronizer, I am using it to trigger the cameras and the laser. It doesn't make sense to let the laser run at full power CW when the cameras only expose for 1/1000s (more dangerous, more heat, less energy per exposure). Also, the timing is much more precise and flexible when I modulate the laser beam. The camera exposure does not seem to have a perfectly vertical slope too, so using exposure alone makes PIV measurements less precise with these cameras. A trigger signal also doesn't immediately trigger the exposure, there is quite a long delay. In the end, it seems possible to have an interframe time of about 500 micro seconds. I am still experimenting and also don't know yet if I can use a MJPEG stream (45 fps, but compressed data) or if I will prefer the YUY2 stream (5 fps, uncompressed).
Unfortunately, Matlab's implementation of reading a webcam is not documented, and it seems to change between YUY2 and MJPEG depending on the matlab version with no possibility to change the behaviour... So I will most likely use ffmpeg to setup the cameras and capture the data, then reading the image files into PIVlab during recording.
Two different laser colors, two bandpasses and a (by default hardware syncronized) stereo camera is another option that I might check out. If there is a recommendation for a global shutter USB stereocamera, then let me know :-D