He accedido a las características de la imagen. Las imágenes tienen unas características, por ejemplo, dado un tipo de datos iplImage (img) las características de la altura y al anchura vienen definidas como img->width y como img->height.
He recorrido pixel a pixel la imagen con dos bucles anidados, he ido cambiando el color que muestra este por el gris. Para conseguir el gris he hallado la media de los 3 canales.
void RGB2GRAY(IplImage *img){
int i,j;
double media;
//printf("%d\n",img->height);
//printf("%d\n",img->width);
for(i=0;i
for(j=0;j
CvScalar s;
s=cvGet2D(img,i,j); // obtenemos el valor en el píxel (i,j)
//printf("B=%f, G=%f, R=%f\n",s.val[0],s.val[1],s.val[2]);
media=(s.val[0]+s.val[1]+s.val[2])/3;
s.val[0]=media;
s.val[1]=media;
s.val[2]=media;
cvSet2D(img,i,j,s);
}
}
};
Otra manera para resolver esto es con la función predefinida por opencv cvcvtcolor.
Uso de la conversión OpenCV:
cvCvtColor(cimg,gimg,CV_BGR2GRAY);
El uso de un directo de la conversión:
for(i=0;i
gimgA[i][j]= (uchar) (cimgA [i] [j]. b * 0,114 +
cimgA[i][j].g*0.587 + cimgA[i][j].r*0.299);
Convertir entre espacios de color:
cvCvtColor(src,dst,code); / / src -> dst
code = CV_
por ejemplo: CV_BGR2GRAY, CV_BGR2HSV, CV_BGR2Lab
int main (int argc, char **argv){
CvCapture* capture = 0;
IplImage* img = 0;
IplImage* gray;
int num=0;
cvNamedWindow( "Video", 1 );
cvNamedWindow ("Gris",1);
printf("Capture from camera\n");
capture = cvCaptureFromCAM(0);
if(!capture){
printf( "Can't initialize video capturing\n\n" );
return -1;
}
img=cvQueryFrame( capture );
gray = cvCreateImage(cvSize(img->width, img->height),IPL_DEPTH_8U,1);
for(;;){
img=cvQueryFrame( capture );
if (!img)
break;
cvShowImage( "Video", img );
//RGB2GRAY(img);
cvCvtColor(img, gray, CV_BGR2GRAY);
cvShowImage ("Gris",gray);
cvWaitKey(1);
num++;
if (num==100){
cvReleaseCapture(&capture);
return 0;
}
}
cvDestroyAllWindows();
return 0;
}
Bueno, esto ya va viento en popa, ahora no lo dejes parado y a continuar...
ResponderEliminarSiguiente paso, poder etiquetar las zonas de aparcamiento, las zonas de paso, las zonas prohibidas de paso/aparcamiento (aceras, cesped,...). Estimar los coches/peatones por tamaño, color, forma,...
Se pueden hacer muchas cosas!!
acabo de probarlo y me gira la figura (boca abajo)
ResponderEliminarno entiendo...