I really doubt that OpenCV is able to do any meaningful processing with >200fps even on Pi 3B, that leaves <5ms processing time per frame.
I did try simple edge detection on a 320x216 frame and was not able to achieve more than 50fps with OpenCV:
There is a cheap (<10$) USB camera
that can do 187fps at 320x240, the PS3 Eye:
Raspverry v1 camera
can do up to 750fps with reduced vertical resolution using raspiraw.
You will not get >200fps with 800x600, but you can get 220 fps with 640x200 with full fov:
This all is possible only by capturing raw Bayer data from CSI-2 camera
without GPU processing.
The fastest option is to skip raw10 to rgb conversion (costly) and skip every 5th byte giving you a gray8 image.
The rg/gb pixels have different brightness.
It depends on which colors you want to separate on whether gray frame would allow to detect.
If your colors can be separated based on gray image, then 2nd link above thread describes how you can use raspiraw for control of your application.
The only control I did sofar with raspiraw was automatic camera
tilt calibration, at 60fps at that time before I knew how to get 90fps and higher:
See this recent thread on two 360/350 fps videos taken:
With reduced vertical row number 600fps 640x64 (rescaled to 640x128) video can be taken with v1 camera
(played 24x slowed down):
Using raspiraw for high framerate processing is possible with v1 camera
only currently, because I was not able to capture the needed register settings for v2 camera
and nobody else did sofar
According imx219 and ov5647 datasheets maybe even 2000fps might be possible for 640x64 on v2 versus "only" 665fps on v1 camera
For 640x200 at 220fps use "640x400_s" tool raspiraw options and skip post processing row doubling step: