I guess it depends how much latency you can tolerate.
If you don't care about latency at all, you can use the recorder endpoint to record to a file, and that file is easy to read once the recording is done.
If you do want it to be somewhat real-time, but a few seconds delay isn't an issue, you stream from a recording file while the recording is ongoing.
The recorder endpoint will upload a webm file via HTTP if your OpenCV application is accessible to your KMS via HTTP, I'm not sure how the latency of this compares to writing a file and reading the file. It seems like it should be slightly better.
If you need it as "real time" as possible, you probably need to stick with WebRTC somehow, or figure out how to make the RTSP approach work.
Another route would be to customize the KMS itself - add a plugin to do the computation you are trying to do. Definitely a lot more complex if you don't have any good C++ programmers. This would probably have the lowest latency and best performance, but has the highest development cost.