I'm hoping you can suggest whether Arduino will suit my project's needs (or recommend alternatives):
- Need motion detection still camera (capture image when new object enters scene). Must be fast.
- Need to analyze image with OpenCV
- Ideally there would be two cameras (mounted a few feet apart but pointing at the same scene). This is not a strict requirement though.
- Need to stream video over wifi
I'll be using opencv to get a differential on the original scene and the "modified" scene to target what has changed (just trying to get the x/y coordinates of the changed scene). When motion detection happens, the image capture and opencv processing need to happen within 2 seconds, so it needs to be high performance.
Is Arduino capable of this? What camera components would you recommend?
The arduino can NOT do anything with video. It can control the position and maybe tell the camera to take a picture, but analyze video, no. You might just want to get a mini computer or even a simple computer such as a raspberry PI.
Thank you for the quick reply. I don't want to do anything with the video stream other then pipe it to a server. The video component would be separate. At the same time, there would be a motion-detection-capable image capture device. When an object enters the scene, it takes a pic and opencv processes the image and I upload the x/y coordinates to a server. I hope that explains it better.
you are probably familiar with Zoneminder, which seems close to your requirements. The reason I'm mentioning it is that I find its mode of operations instructive. It uses IP cameras to take continuous snapshots at a (configurable, but usually) low frame rate, compares them, and when entering and alarm state can switch to a higher frame rate and perform various tasks, e.g. send them to an external server.
Assuming this is a reasonable starting point, what value could by added by an Arduino? As HazardsMind already pointed out, one should not expect image processing capabilities. I would add that also a trivial task such as transferring small snapshots in a fast and reliable way is not something I would do with an Arduino. On the other hand the Arduino can provide useful additional features: it has a range of sensors for presence and motion detection, and can do things such as switching on the lights and send alerts through different channels. So it can be a valuable add-on to the system, but the system itself can only be based on a true computer (possibly a RPi).
Is Arduino capable of this?
What camera components would you recommend?
Any USB or IP web cam that your OpenCV application can access. Note that there are lots of existing applications that do motion detection and if that's all you need you probably don't need to write that yourself.