2016-05-11 4 views
6

У меня проблема с тем, что мой кот издевается над назойливой кошкой до такой степени, что кошка входит в наш дом летом и ела нашу пищу кошек и спала в нашей мебели.OpenCV: Обнаружение кошки с определенным цветом. Trivial?

Моя кошка серая, а проблема - коричневая.

Я хотел бы сделать систему оповещения, используя кулачок действия WiFi и обнаружение OpenCV на ящике Linux, , но я больше не занимаюсь кодированием.

Так что мой вопрос. Это тривиальная задача с использованием стандартных модулей OpenCV?

Или для этого потребуется большое количество исходного кода?

Я знаю, что существует классификатор каскадов OpenCV, но он никогда не использовал его.

С наилучшими пожеланиями

Jacob

+0

Upvoting потому, что ты заставил меня улыбнуться – Antonio

+0

мне нравится идея, если вы серьезно , если вы предоставите дополнительную информацию о своем проекте, я попытаюсь сделать некоторые предложения. – sturkmen

+0

@sturkmen Я не уверен, что еще сказать. План состоит в том, чтобы неподвижная камера смонтировалась над моей передней дверью, которая отправляет живой видеопоток в ящик Linux, а затем в этом поле обнаруживается конкретный кот на основе всего круглого цвета или любой кошки, которая не принадлежит мне. – user3866319

ответ

1

очень первоначальный ответ, чтобы показать способ, чтобы начать свой проект.

вы можете попробовать найти обученные классификаторы для кошек. например, я нашел this и протестировал некоторые изображения кошек с помощью кода ниже.

#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; 
} 

некоторые результирующие изображения я получаю

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

когда вы нашли удовлетворительного классификатор вы можете использовать его с видеокадров, и вы можете сделать фильтрацию обнаруженных кошек с их цветами.

также вы можете посмотреть на

cat detection using latent SVM in opencv

Black Cat Detector (без понятия, если он работает)

+0

взгляните на http://answers.opencv.org/question/29495 – sturkmen

Смежные вопросы