2012-09-07 76 views
5

¿es posible dibujar líneas de cuadrícula definidas por el usuario con puntos definidos en todas las intersecciones, frente a la salida de la muestra de detección de color en el archivo de muestra opencv? Básicamente, la cámara web tendrá que detectar la cabeza y los hombros humanos desde arriba. Luego, cuando se detecta una persona, necesito que las líneas de la cuadrícula estén allí para poder saber desde qué cuadrícula más externa (hombro izquierdo), a la cuadrícula más externa (hombro derecho), en ambos ejes x e y (frente y parte de atrás de la cabeza). A partir de entonces, estos puntos deben enviarse para el funcionamiento de piezas mecánicas como el actuador y las válvulas.Dibujando un conjunto fijo de líneas de cuadrícula con opencv

apreciaré cualquier ayuda, coz estoy realmente desesperada ahora ..

Thx!

Soy un usuario de nivel básico de opencv, con conocimientos básicos sobre cómo trabajar con C++. Actualmente estoy usando opencvV2.1, en VS2008.

Respuesta

3

Es difícil decir cuál es realmente su problema.

Si solo desea dibujar líneas de cuadrícula, no hay función de opencv que lo haga. Para trazar líneas en una cuadrícula, puede usar cv::line en un bucle, luego dibujar las intersecciones con un bucle anidado.

// 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

Para la elaboración de una cuadrícula en la imagen utilizando la función de línea de 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)); 
Cuestiones relacionadas