Estoy usando la biblioteca OpenCV para un proyecto de procesamiento de imágenes para detectar manos. Inicialicé la imagen en iplimage
, la coloreé y luego la convertí a HSV con cvCvtColor(imageHand,imageHand,CV_BGR2HSV);
No conozco el algoritmo eficiente, así que ese es mi problema. Consulte mi código:Detección de manos usando OpenCV
for(int row = 0; row < imageHand->height; row++)
{
for (int col = 0; col < imageHand->width; col++)
{
h =(imageHand->imageData[imageHand->widthStep * row + col * 3]) ;
s = (imageHand->imageData[imageHand->widthStep * row + col * 3 + 1]);
v = (imageHand->imageData[imageHand->widthStep * row + col * 3 + 2]);
if( h>85)
{
imageHand->imageData[imageHand->widthStep * row + col * 3 ] = 0 ;
imageHand->imageData[imageHand->widthStep * row + col * 3 + 1 ] =0 ;
imageHand->imageData[imageHand->widthStep * row + col * 3 + 2 ] = 0 ;
}
else
{
imageHand->imageData[imageHand->widthStep * row + col * 3 ] = 255 ;
imageHand->imageData[imageHand->widthStep * row + col * 3 + 1 ] = 255 ;
imageHand->imageData[imageHand->widthStep * row + col * 3 + 2 ] = 255 ;
}
}
}
Creo que el rango de la h
buscado es > 85
!? Si conoces un mejor algoritmo que por favor guíame.
Limpié la ortografía y la gramática; compruebe que la información siga siendo correcta. – Pubby
¿Podría especificar para qué necesita detección de mano? ¿Debería ser en tiempo real o podría ser hecho fuera de línea? ¿Necesita esto trabajando en una gran variedad de condiciones de luz? ¿O tal vez solo estás jugando? –
Necesito un código de detección manual para portarlo a FPGA, así que debe ser en tiempo real y de alta eficiencia y quiero que funcione para las condiciones más probables –