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)
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"); }
Tipps für schnelleres Laden
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!