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)