This is a very simple answer to show how to start your project.
You can try to find trained classifiers for cats. for example, I found this and checked out some cat images using 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 images of the result are obtained

when you find a satisfactory classifier, you can use it with video frames, and you can filter on detected cats with their colors.
also you can take a look at
cat detection using hidden svm in opencv
Black Cat Detector (I don't know if it works)
source share