Saltar al contenido

extraer una imagen de canal de una imagen RGB con opencV

Solución:

creo cvSplit es lo que estás buscando (docs). Puede usarlo, 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);

Tenga en cuenta que deberá 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).

Dado que esto está etiquetado qt Daré una respuesta de 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

Otra forma es utilizar extractChannel:

cv::Mat channel;
//image is already loaded
cv::extractChannel(image, channel, 2);

Esto extraerá el tercer canal de image y guarda el resultado en channel. También se puede extraer un canal en particular con extractImageCOI y mixChannels .

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *