Heim > Backend-Entwicklung > C++ > Wie kann ich das Laden großer Mattenobjekte in OpenCV beschleunigen?

Wie kann ich das Laden großer Mattenobjekte in OpenCV beschleunigen?

DDD
Freigeben: 2024-12-01 22:51:12
Original
115 Leute haben es durchsucht

How Can I Speed Up Loading Large Mat Objects in OpenCV?

Schnelleres Laden großer Mat-Objekte in den Speicher in OpenCV

Während die FileStorage-Methode in OpenCV eine bequeme Möglichkeit zum Speichern und Abrufen von Mat-Objekten bietet , ist dies möglicherweise nicht die effizienteste Option zum Laden großer Mat-Objekte in den Speicher. Hier sind mehrere alternative Ansätze, die erhebliche Geschwindigkeitsverbesserungen bieten können:

Binäres Dateiformat

Das Speichern und Laden von Mat-Objekten im Binärformat ist eine erhebliche Leistungssteigerung. Die Matwrite- und Matread-Funktionen von OpenCV erleichtern diesen Prozess. Durch die Verwendung von Binärdateien wird der mit den Serialisierungs- und Deserialisierungsverfahren von OpenCV verbundene Overhead vermieden, was zu viel schnelleren Ladezeiten führt.

Testergebnisse

Ladezeitvergleiche zwischen FileStorage und Binärformaten für sowohl kleine als auch große Bilder:

Using FileStorage: 5523.45 ms (small image)
Using Raw:         50.0879 ms (small image)
Using FileStorage: (out of memory) (large image)
Using Raw:         197.381 ms (large image)
Nach dem Login kopieren

Code Beispiel

Hier ist ein Codeausschnitt, der die Verwendung von matwrite und matread demonstriert:

#include <opencv2/opencv.hpp>
#include <iostream>
#include <fstream>

void matwrite(const std::string& filename, const cv::Mat& mat)
{
    // Save Mat object to a binary file
}

cv::Mat matread(const std::string& filename)
{
    // Load Mat object from a binary file
}

int main()
{
    // Generate random data
    cv::Mat m = cv::Mat::randu(1024*256, 192, CV_8UC1);
    
    // Save to files
    matwrite("fs.yml", m);
    matwrite("raw.bin", m);
    
    // Load from files
    cv::Mat m1 = matread("fs.yml");
    cv::Mat m2 = matread("raw.bin");
}
Nach dem Login kopieren

Tipps für schnelleres Laden

  • Debug-Modus vermeiden: Leistungsmessungen sollten niemals im Debug-Modus durchgeführt werden, da dies erheblich ist verlangsamt die Codeausführung.
  • Speicherverfügbarkeit prüfen: Stellen Sie sicher, dass die FileStorage-Methode den verfügbaren Speicher nicht erschöpft, insbesondere beim Umgang mit großen Mat-Objekten.
  • Erwägen Sie das Binärformat: Das Binärdateiformat bietet außergewöhnliche Geschwindigkeitsverbesserungen, insbesondere für große Mat-Objekte.

Das obige ist der detaillierte Inhalt vonWie kann ich das Laden großer Mattenobjekte in OpenCV beschleunigen?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage