2016-05-11 16 views
6

Ho un problema con il mio gatto vittima di bullismo da parte di un gatto che fa il nido nella misura in cui il gatto entra nella nostra casa in estate e mangia il cibo per gatti e dorme nei nostri mobili.OpenCV: Rileva il gatto con un colore specifico. Banale?

Il mio gatto è grigio e il gatto problema è marrone.

Vorrei creare un sistema di allarme utilizzando una action cam WiFi e il rilevamento OpenCV su una macchina Linux, ma non faccio più molta codifica.

Quindi la mia domanda è. È un compito banale usando i moduli OpenCV standard?

O richiederebbe una grande quantità di codice originale?

So che esiste OpenCV Cascade Classifier, ma non l'ho mai usato.

Cordiali saluti

Jacob

+0

upvoting perché mi hai fatto sorridere – Antonio

+0

Mi piace l'idea se siete seri . se fornisci ulteriori informazioni sul tuo progetto proverò a fare alcuni suggerimenti. – sturkmen

+0

@sturkmen Non sono sicuro di cos'altro dire. Il piano è di avere una telecamera stazionaria montata sopra la porta principale che manda un flusso video live su una scatola Linux e poi fa in modo che questa casella rilevi un gatto specifico basato su tutto il colore o qualsiasi gatto che non sia mio. – user3866319

risposta

1

è risposta molto iniziale solo per mostrare un modo per avviare il progetto.

si può provare a trovare classificatori addestrati per i gatti. per esempio ho trovato this e testato alcune immagini di gatti con il codice qui sotto.

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

alcune immagini risultato che ottengo

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

quando si trova un classificatore soddisfacente è possibile utilizzarlo con fotogrammi video e si può fare il filtraggio sui gatti rilevati con i loro colori.

Inoltre è possibile dare un'occhiata a

cat detection using latent SVM in opencv

Black Cat Detector (idea se funziona)

+0

dai un'occhiata a http://answers.opencv.org/question/29495 – sturkmen

Problemi correlati