Dieses kleine OpenCV -Programm zeigt, wie das RGB -Image in R-, G- und B -Komponenten getrennt wird. Das Programm ist in niedriger Programmierung geschrieben, da in OpenCV die Funktion erstellt wird, die diesen Code effizienter machen würde. Dieses Beispiel vertieft jedoch ein Verständnis dafür, wie das Bild in die Matrix von Pixeln aufgeteilt wird und wie jedes Pixel separat manipuliert werden kann.
Code schreiben
#include #include "cv.H "#include" HighGui.H "Verwenden von Namespace std; int main (int argc, char ** argv) // Farbe im ersten Argument angegeben. ], Cv_load_image_color); iplimage *red = cvcreateimage (cvsize (img-> width, img-> height), img-> tiefe, img-> nchannels); iplimage *green = cvcreateimage (cvsize (img-> width, img-, img- > Höhe), img-> Tiefe, img-> nchannel); iplimage *blue = cvcreateimage (cvsize (img-> breit, img-> Höhe), img-> tiefe, img-> nchannel); // Richten Sie den Zeiger ein So greifen Sie auf IMG-Daten zu uchar * pimg = (uchar *) img-> imagedata; // Zeiger einrichten, um Daten zu schreiben. uchar * pBblue = (uchar *) blau-> imagedata; int i, j, rot, grün, blau, byte; für (i = 0; i Höhe; i ++) für (j = 0; j width; j ++) rot = pimg [i*img-> widthStep + j*img-> nchannels + 2];grün = pimg [i*img-> widthStep + j*img-> nchannels + 1]; blau = pimg [i*img-> widthStep + j*img-> nchannels + 0]; // rote Prädium [i*img-> widthStep + j*img-> nchannels + 2] = rot; // Green pgreen [i*img-> widthStep + j*img-> nchannels + 1] = grün; // Blue pBblue [i*img-> widthStep + j*img-> nchannels + 0] = blau; // Bilder speichern cvsaveimage (argv [2], rot); cvsaveimage (argv [3], grün); cvsaveimage (argv [4], blau); Rückkehr 0;
KOMPILIEREN
g ++ 'pkg-config opencv--cflags-libs' \ separat-rgb.CPP -o separat -rgb
VERWENDUNG
./separat-rgb img.PNG rot.PNG Green.PNG Blau.png