Heim >Backend-Entwicklung >C++ >Wie kann ich effizient auf Pixelkanalwerte in OpenCV-Mat-Bildern zugreifen?
Abrufen von Pixelkanalwerten aus OpenCV-Mat-Darstellungen
Um den Kanalwert für ein bestimmtes Pixel in einem OpenCV-Mat-Bild zu erhalten, können Sie Folgendes verwenden: die folgenden Methoden:
Methode 1: Verwendung von OpenCV's Vec3b
Für Mat-Bilder vom Typ CV_8UC3, die drei Kanäle (blau, grün und rot) enthalten, kann die Vec3b-Datenstruktur verwendet werden:
for(int i = 0; i < foo.rows; i++) { for(int j = 0; j < foo.cols; j++) { Vec3b bgrPixel = foo.at<Vec3b>(i, j); // Access individual channel values: uint8_t blue = bgrPixel[0]; uint8_t green = bgrPixel[1]; uint8_t red = bgrPixel[2]; } }
Methode 2: Direkter Pufferzugriff
Für eine verbesserte Leistung kann direkter Zugriff auf den Bilddatenpuffer erfolgen verwendet:
uint8_t* pixelPtr = (uint8_t*)foo.data; int cn = foo.channels(); // Number of channels per pixel for(int i = 0; i < foo.rows; i++) { for(int j = 0; j < foo.cols; j++) { // Retrieve channel values: uint8_t blue = pixelPtr[i*foo.cols*cn + j*cn + 0]; uint8_t green = pixelPtr[i*foo.cols*cn + j*cn + 1]; uint8_t red = pixelPtr[i*foo.cols*cn + j*cn + 2]; } }
Hinweis: OpenCV speichert Pixeldaten intern im BGR-Format (blau, grün, rot) und nicht im RGB.
Das obige ist der detaillierte Inhalt vonWie kann ich effizient auf Pixelkanalwerte in OpenCV-Mat-Bildern zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!