2012-09-07 16 views
5

È possibile disegnare linee griglia definite dall'utente con punti definiti a tutte le intersezioni, rispetto all'uscita del campione di rilevamento colore nel file campione opencv? Fondamentalmente, la webcam dovrà rilevare la testa e le spalle umane dall'alto. Poi, quando viene rilevata una persona, ho bisogno che le linee della griglia siano lì in modo da essere in grado di sapere da quale griglia più esterna (spalla sinistra), alla prossima griglia più esterna (spalla destra), in entrambi gli assi x e y (fronte e retro della testa). Successivamente, questi punti devono essere inviati per il funzionamento di parti meccaniche come attuatore e valvole.Disegno fisso di linee di griglia con opencv

ho veramente apprezzare alcun aiuto, coz io sono davvero disperata ora ..

Thx!

Sono un utente opencv entry level, con una conoscenza da principiante del lavoro con C++. Attualmente sto usando opencvV2.1, su VS2008.

risposta

3

È difficile dire qual è il tuo problema.

Se si desidera disegnare linee griglia, non esiste alcuna funzione opencv che lo faccia. Per tracciare linee in una griglia, è possibile utilizzare cv::line in un ciclo, quindi disegnare le intersezioni con un ciclo annidato.

// assume that mat.type=CV_8UC3 

dist=50; 

int width=mat.size().width; 
int height=mat.size().height; 

for(int i=0;i<height;i+=dist) 
    cv::line(mat,Point(0,i),Point(width,i),cv::Scalar(255,255,255)); 

for(int i=0;i<width;i+=dist) 
    cv::line(mat,Point(i,0),Point(i,height),cv::Scalar(255,255,255)); 

for(int i=0;i<width;i+=dist) 
    for(int j=0;j<height;j+=dist) 
    mat.at<cv::Vec3b>(i,j)=cv::Scalar(10,10,10); 
0

Per disegnando una griglia sull'immagine utilizzando funzione linea OpenCV

Mat mat_img(image); 
int stepSize = 65; 

int width = mat_img.size().width; 
int height = mat_img.size().height; 

for (int i = 0; i<height; i += stepSize) 
    cv::line(mat_img, Point(0, i), Point(width, i), cv::Scalar(0, 255, 255)); 

for (int i = 0; i<width; i += stepsSize) 
    cv::line(mat_img, Point(i, 0), Point(i, height), cv::Scalar(255, 0, 255)); 
Problemi correlati