As 0x0FFF says in another answer, the question does not provided enough details to recommend a proper architecture. Though this question is old, I'm just adding my research that i did on this topic so that it can help anyone in their research.
Spark is a great way of doing processing on distributed systems. But it doesn't have a strong community working on OpenCV. Storm is another Apache's free and open source distributed real-time computation system. Storm makes it easy to reliably process unbounded streams of data, doing for real-time processing what Hadoop did for batch processing.
StormCV is an extension of Apache Storm specifically designed to support the development of distributed computer-vision pipelines. StormCV enables the use of Storm for video processing by adding computer vision (CV) specific operations and data model. The platform uses Open CV for most of its CV operations and it is relatively easy to use this library for other functions.
There are a few examples of using storm with OpenCV. There are examples on their official git hub page. You might want to look at this face detection example and try it to do human detection - https://github.com/sensorstorm/StormCV/blob/master/stormcv-examples/src/nl/tno/stormcv/example/E2_FacedetectionTopology.java.