2016-05-11 16 views
6

Ich habe ein Problem damit, dass meine Katze von einer nagenden Katze in dem Maße gemobbt wird, dass die Katze im Sommer unser Haus betritt und unser Katzenfutter frisst und in unseren Möbeln schläft.OpenCV: Katze mit bestimmter Farbe erkennen. Trivial?

Meine Katze ist grau und das Problem Katze ist braun.

Ich möchte ein Alarmsystem mit einer WiFi-Action-Cam und OpenCV-Erkennung auf einer Linux-Box, machen, aber ich mache nicht mehr viel Codierung.

Also meine Frage ist. Ist das eine triviale Aufgabe mit Standard-OpenCV-Modulen?

Oder würde es eine große Menge an Originalcode benötigen?

Ich weiß, dass es OpenCV Cascade Classifier gibt, aber habe es nie benutzt.

Mit freundlichen Grüßen

Jacob

+0

Upvoting, weil du mich – Antonio

+0

Lächeln machte ich mag die Idee, wenn Sie es ernst . Wenn Sie weitere Informationen zu Ihrem Projekt angeben, werde ich versuchen, einige Vorschläge zu machen. – sturkmen

+0

@sturkmen Ich bin mir nicht sicher, was ich sonst noch sagen soll. Der Plan ist, eine stationäre Kamera über meiner Haustür anzubringen, die einen Live-Videostream an eine Linux-Box sendet und dann in dieser Box eine bestimmte Katze basierend auf der Rundumfarbe oder eine Katze, die nicht meine ist, erkennt. – user3866319

Antwort

1

es ist sehr erste Antwort nur einen Weg zu zeigen, Ihr Projekt zu starten.

können Sie versuchen, ausgebildete Klassifikatoren für Katzen zu finden. zum Beispiel fand ich this und testete einige Katzenbilder mit dem Code unten.

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

einige Ergebnisbilder i bekommen

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

, wenn Sie einen zufrieden stellende Klassifizierer finden Sie es mit Video-Frames verwenden können, und Sie können mit ihren Farben auf erkannte Katzen keine Filterung.

können Sie auch einen Blick

bei

cat detection using latent SVM in opencv

Black Cat Detector (keine Ahnung, ob es funktioniert)

+0

werfen Sie einen Blick auf http://answers.opencv.org/question/29495 – sturkmen