Heim > Backend-Entwicklung > C++ > Wie kann ich effizient auf Pixelkanalwerte in OpenCV-Mat-Bildern zugreifen?

Wie kann ich effizient auf Pixelkanalwerte in OpenCV-Mat-Bildern zugreifen?

Linda Hamilton
Freigeben: 2024-11-23 08:46:10
Original
341 Leute haben es durchsucht

How to Efficiently Access Pixel Channel Values in OpenCV Mat Images?

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];
    }
}
Nach dem Login kopieren

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];
    }
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage