Pregunta

aquí está mi problema:

Estoy buscando una manera de importar una imagen en C ++ y luego atravesar sus píxeles, incrementando un contador cada vez que se encuentra un píxel de un color determinado.

He hecho algunas investigaciones, pero no he encontrado nada particularmente útil. Diablo parece una buena opción, pero no estoy seguro de por dónde empezar.

Aquí hay un poco de C ++ / Python pseudo-código es de esperar que ilustra lo que estoy tratando de hacer:

for image in folder:

    A = 0;
    B = 0;

    for pixel in image:

        if (pixel == colourA) {A++}
        if (pixel == colourB) {B++}

    //Output the count of colours for each image
    outputToFile(A, B);

¿alguien tiene algunos consejos sobre dónde empezar?

Gracias

EDITAR Alguna información adicional: Estoy usando Windows 7 y todas las imágenes se .pngs

Edit2 Tengo todo de trabajo, excepto en realidad averiguar el color del píxel actual. Actualmente estoy usando esto:

int blue = ((uchar *)(img->imageData + pixelX*img->widthStep))[pixelY*img->nChannels + 0];

Sin embargo, no funciona, y no tengo ni idea de cómo funciona. No he podido encontrar nada acerca de esto que yo pudiera entender. Me podía punto cualquiera en la dirección correcta sobre cómo encontrar los valores RGB de un píxel determinado?

Edit3 ¡Hecho! Para cualquier persona que encuentre esta tratando de hacer una cosa similar, la mayoría de mis preguntas restantes y una feria poco de código se puede encontrar aquí . Gracias por la ayuda!

¿Fue útil?

Solución

definiately echar un vistazo a OpenCV porque cuando se empieza a necesitar más espacio a continuación, mover OpenCV le permitirá hacer muchas tareas de visión por ordenador más. Y usar impulso :: sistema de ficheros a hacer el 'para cada imagen en el directorio' es un código.

Tenga en cuenta que la cv :: función de comparación hace básicamente la mitad del trabajo para el que ya ... te dejaré leído y disfrutar el aprovechamiento de la API de OpenCV.

Otros consejos

Se debe echar un vistazo a OpenCV.

depende de la plataforma y formato de imagen. En Windows, las imágenes BMP se apoyan de forma nativa (i. E. En la API). ImageMagick es una biblioteca multiplataforma, bastante universales, toma alrededor de cualquier formato por ahí, pero es pesada. Qt tiene algún tipo de procesamiento de imágenes, así -. Limita a la mayoría de formatos comunes

SDL tiene algunas cosas útiles manipulación de píxeles.

http://www.libsdl.org/

Es muy limpio también.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top