2012-01-28 13 views
7

Estoy trabajando con QT y OpenCV, tengo este cuadrado que necesito extraer pero necesito usar la conversión de RGB a un canal (ROJO básicamente). Cualquier consejo será más que bienvenido, por favor siéntase libre de aconsejar qué funciones usar. Gracias por adelantado.extrae una imagen de canal de una imagen RGB con opencV

+0

¿Le gustaría echar un vistazo a la función cvtColor()? http://opencv.willowgarage.com/documentation/cpp/miscellaneous_image_transformations.html#cvtColor –

Respuesta

2

Por lo que yo sé una llamada a,

cvtColor(src, bwsrc, CV_RGB2GRAY); 

puede hacer eso, donde src es la imagen fuente multicanal y el tercer parámetro representa el número de canales en el destino. Entonces, puedes hacer eso en OpenCV y mostrar la imagen en tu interfaz Qt.

Por otro lado, puede dividir los canales en matrices separadas de un solo canal utilizando el método split() apropiado.

http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html#split

10

creo cvSplit es lo que estás buscando (docs). Se puede utilizar, por ejemplo, para dividir RGB en R, G y B:

/* assuming src is your source image */ 
CvSize s = cvSize(src->width, src->height); 
int d = src->depth; 
IplImage* R = cvCreateImage(s, d, 1); 
IplImage* G = cvCreateImage(s, d, 1); 
IplImage* B = cvCreateImage(s, d, 1); 
cvSplit(src, R, G, B, null); 

Nota tendrá que tener cuidado con el pedido; asegúrese de que la imagen original esté realmente ordenada como R, G, B (hay una posibilidad decente de que sea B, G, R).

+0

esto es probablemente lo que buscó el consultante. – kiltek

7

Dado que se trata de qt Voy a dar una respuesta en C++.

// Create Windows 
    namedWindow("Red",1); 
    namedWindow("Green",1); 
    namedWindow("Blue",1); 

    // Create Matrices (make sure there is an image in input!) 
    Mat input; 
    Mat channel[3]; 

    // The actual splitting. 
    split(input, channel); 

    // Display 
    imshow("Blue", channel[0]); 
    imshow("Green", channel[1]); 
    imshow("Red", channel[2]); 

probado en OpenCV 2.4.5

Cuestiones relacionadas