Skip to content
Advertisement

OpenCV: Detecting cat with specific color. Trivial?

I have a problem with my cat being bullied by a nabouring cat to the extent that the cat enters our house in the summer and eat our cats food and sleeps in our furniture.

My cat is gray and the problem cat is brown.

I would like to make an alert system using a WiFi action cam and OpenCV detection on a Linux box, but I don’t do much coding anymore.

So my question is. Is this a trivial task using standard OpenCV modules?

Or would it require a large amount of original code?

I know that there is OpenCV Cascade Classifier, but have never used it.

Kind Regards

Jacob

Advertisement

Answer

it is very initial answer just to show a way to start your project.

you can try to find trained classifiers for cats. for example i found this and tested some cat images with the code below.

#include <iostream>

#include "opencv2/highgui.hpp"
#include "opencv2/objdetect.hpp"
#include "opencv2/imgproc.hpp"

using namespace std;
using namespace cv;

int main( int argc, const char** argv )
{
    if (argc < 3)
    {
    cerr << "usage:n" << argv[0] << " <image_file_name> <model_file_name>" << endl;
    return 0;
    }

    // Read in the input arguments
    string model = argv[2];

    CascadeClassifier detector(model);
    if(detector.empty())
    {
        cerr << "The model could not be loaded." << endl;
    }

    Mat current_image, grayscale;

    // Read in image and perform preprocessing
    current_image = imread(argv[1]);
    cvtColor(current_image, grayscale, CV_BGR2GRAY);

    vector<Rect> objects;
    detector.detectMultiScale(grayscale, objects, 1.05, 1);

    for(int i = 0; i < objects.size(); i++)
    {
        rectangle(current_image, objects[i], Scalar(0, 255, 0),2);
    }

    imshow("result",current_image);
    waitKey();
    return 0;
}

some result images i get

enter image description here enter image description here enter image description here

when you find a satisfactory classifier you can use it with video frames and you can do filtering on detected cats with their colors.

also you can take a look at

cat detection using latent SVM in opencv

Black Cat Detector (no idea if it works)

User contributions licensed under: CC BY-SA
9 People found this is helpful
Advertisement