I am in charge of studying passage of different species of fish (six species) between lakes in Patagonian Andean range. We've been thinking of deploying video cameras underwater, but we'd need software that would control the cameras and record images only when the video adequately changes so as to avoid having to continuously check the video.

If the software is also capable of recognizing the species that would even be better.

  • 1
    $\begingroup$ We would love to help you out (that's what we're here for), but we'd feel much less like slaves and more like experts if you showed that you had made an effort in solving your own problem, present us with what you have tried or investigate, what you found and why they were not adequate. Believe it or not, more often than not, by trying to solve your own problem, you'd actually solve your problem. $\endgroup$
    – Shahbaz
    Jul 11 '14 at 12:57

The main difficulty of using openCV to classify fish underwater involves lighting. Even in clear water, the amount of available light varies wildly with depth, cloud cover, sun position, etc. Fish prefer not to advertise their presence to any possible predators, so they've evolved to blend into the water column as much as possible.

That's not to say it's impossible, but keep in mind that you will be looking for some very low-contrast features.

For simply recording video when there is motion, look for a "video motion detector". These analyze the difference between successive frames of video (with some intelligence built in, in some cases) to decide when to record.

  • $\begingroup$ As function (a) Opencv can detect motion and start/stop video recording, for later human viewing. $\endgroup$
    – EEd
    Jul 12 '14 at 4:42
  • $\begingroup$ Fully agree classification comments. OpenCV has additional (b) and (c), fine tuning to reduce false alarm and amount of time for human viewing. Setting up opencv takes days, given suitable past background in programming. Simple windows PC (or Linux if familiar) and low cost web cam can be used for quick bench testing, in air, using photo of fish, etc. On the other hand, many ready-made applications (no programming) exist for motion recording start/stop, that is, only function (a). Hope it helps $\endgroup$
    – EEd
    Jul 12 '14 at 5:02

OpenCV, a portable video library for hosted (e.g. Linux, Windows etc) as well as specialized embedded systems (e.g. Raspberry Pi), has been around for decades and has hundreds of books and tutorials written for it.

Use functions to detect:

  1. difference between frame
  2. calculate the size (of fish)
    • Tune to match size of fish and reduce false alarms
  3. movement of the 'detected block' (fish, as a group of pixels moving in the same direction)
    • helps avoid false detection due to noise (floating leave, rubbish, etc.)

OpenCV has template matching and can detect different types of objects under good lighting conditions and pose. It may not work too well in natural setting in your case, but you can try and see.

OpenCV is a library, not a ready-made application. It is portable and works well in Linux, Windows and other operating systems. There are many high quality tutorials on the web as well as examples.

In all computer vision projects, the computer itself is only half of what matters. Camera, lighting, etc are very important, too. Select a suitable camera, focal length, lighting, etc to get the best possible image quality. If video is EASILY detected by human, computer may be able to do it (for vision, computer is less able than human, but, works 24 hours).

Raspberry Pi has many "tracking" or "counting" projects, such as detecting new people who have just entered a room (note some such projects use opencv some do not) or passed a line. Some examples from YouTube:

People Counter With OPENCV

Real time vehicle counting and velocity estimation using OpenCV

Learning resources



http://videolectures.net/icml2010_bradski_ocv/ [[author of a opencv book]]

There are companies selling complete packages for people/vehicle counting or vehicle classification (e.g. car, truck).

You can search YouTube further for demos such as this:

RIVA IP Cameras - People Counting Supermarket

Hope this helps.

  • $\begingroup$ What does "parent detector" supposed to mean? $\endgroup$
    – Shahbaz
    Jul 11 '14 at 12:35
  • $\begingroup$ raspberrypi.org/learning/parent-detector since some NOT using opencv, let says we forget this line. $\endgroup$
    – EEd
    Jul 11 '14 at 14:43
  • $\begingroup$ hahaha, nice! I was thinking perhaps you meant to say something like "person detector", as a general application. $\endgroup$
    – Shahbaz
    Jul 11 '14 at 14:52

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.